All streams
Search
Write a publication
Pull to refresh
52
0

User

Send message
Еще полезно при программировании — www.ozon.ru/context/detail/id/2429691/.
Чтобы грохнуть, надо записать его пид, и потом послать ему сингал:
pid_t cpid;
cpid = fork();
if(cpid == -1) 
{
    printf("Something is wrong\n");
}
else if (cpid == 0)
{
    while(1); // Ребенка - в бесконечный цикл.
}
else
{
    // родитель
    printf("Press k to kill or t to terminate the child");
    char buf;
    fread(&buf, 1, 1, stdin);
    if(buf=='k')
        kill(cpid, SIGKILL);
    else if(buf=='t')
        kill(cpid, SIGTERM);
    else
        printf("\nNot a correct answer\n");
}
А еще интересно про неблокирующие сетевые операции и поллинг.
А что значит — о программировании под nix-системы?
Будут рассматриваться особенности POSIX'a, сисколлы и прочее? Это было бы интересно.
А тесты проводили только 1 раз или несколько и брали усередненное значение?
Просто кеш будет забиваться одинаковой информацией, что не очень хорошо.
В рассылке был патч для добавления cache в fastcgi_module: www.lexa.ru/nginx-ru/msg23203.html
Единственный минус текущей реализации — нельзя настраивать ключ кеша, он всегда будет как запрос. Из этого вытекает, что запросы вида site.org/disp?cat=1&page=1 и site.org/disp?page=1&cat=1 и будут разными.

Сегодня сделал кеширование thumb'ов в галерее (скрипт упорно делает их на лету) через proxy_cache — полет нормальный.
Суть в том, что бизнес на потоке.
У небольшого хостера, у которого на vps пара десятков (сотен?) клиентов, такого никогда не увидеть — он дорожит каждым клиентом.
У большого хостера, с тысячами таких клиентов, Вы не имеете никакого значения — сегодня уходит один, завтра приходят 2. Им просто не надо пытаться угодить отдельному клиенту.

Ситуация применима не только к VPS, но и к shared-хостингу.
Сегодня в рассылке nginx'a была затронута схожая тема, описано неплохое решение: www.lexa.ru/nginx-ru/msg23177.html
Ну так и парсите еррор-лог на предмет разорванных до передачи всего файла соединений.
Если задача такая — то я вообще не понимаю, где тут проблема.
Считайте не после скачки, а до: пускай пользователю дается не прямая ссылка на файл, а ссылка на php-скрипт, пишущий заветную строку в базу и отдающий X-Accel-Redirect.
30секундная задержка — это много?
И, все-таки, любопытно, назовите задачу, требующую такого странного логгирования.
1. Не понял. Что упало? Этот скрипт надо запускать по крону раз в Н времени. Падать при обработке она не должна. Если упал сам сервер — вариант с пайпом этого недостатка отнюдь не лишен.
2. Если у Вас логи генерируются быстрее, чем их можно парсить, надо задумываться над масштабированием на кластер/кластер больше/другую архитектуру.
2. Решение — абстрактное понятие. Его нельзя скопировать и использовать.
3.1. Пайпы мало создать, их еще использовать надо.
3.2. Все относительно (с) не я.

1,4: Вот Вам решение.
Copy Source | Copy HTML
  1. #!/usr/bin/php
  2. <?php
  3. $log = '/dev/shm/mylog';
  4. $db = mysql_connect();
  5. $in = fopen($log, 'r');
  6. while ($in_str = fgets($in))
  7. {
  8.     mysql_query('тут происходит передача $in_str в БД'); // обрабатываем строку в БД
  9. }
  10. // ifdef SUPPORT_SIG
  11. fclose($in);
  12. unlink($log);
  13. posix_kill($master_pid, SIGUSR1);
  14. // else
  15. ftruncate($in, 0);
  16. fclose($in);
  17. // endif
  18. }
1. Реализация на файлах не потребует агрегатора вообще, достаточно раз в Н времени запускать скрипт парсинга и делать truncate/ftruncate/переименовывать файл. По поводу lighthttpd не могу, честно говоря, ничего сказать, так как в основном используют nginx, который умеет по сигналу переоткрывать логи. Думаю, при грамотном использовании truncate, с лайтом проблем не возникнет, если он открывает логи с O_APPEND. А если нет — можно будет переписать и сделать так, чтобы открывал :)
2. Странно, ниже Вы писали, что Ваше решение как раз не готовое и его не надо копипастить в продакшн.
3.1. Про пайпы при создании каждого процесса, пожалуйста, поподробнее.
3.2. С простотой первого еще можно согласиться, но никак не с простотой второго. В то время, как вся система работы с файлами будет на 2 строчки длиннее первого скрипта.
Если так страшны дисковые операции, что мешает смонтировать tmpfs и писать в лог как в файл?
Неужели, за 30 секунд у Вас скопится столько логов, что это забьет всю память? А пропарсить файл легче, чем городить систему из пайпов и двух пхпшных программ.
2минусующие: докажите, что я не прав.
Да, если ноутбук работает на продуктах компании Microsoft внешний кулер ему действительно необходим :)
Хорошо что они понимают это и предлагают готовое решение.
Ужасно медленно качается :(

Information

Rating
Does not participate
Registered
Activity