Как реализовать выполнение скрипта несущего большую нагрузку

Обсуждение серверного программирования.

Модераторы: Duncon, Yurich

berkut
Сообщения: 82
Зарегистрирован: 26 авг 2004, 19:07

AiK, а чем реализация демона на перл отличается от реализации на php? что такого специфичного есть в перл, чего нет в пхп? >/dev/null
Аватара пользователя
AiK
Сообщения: 2287
Зарегистрирован: 13 фев 2004, 18:14
Откуда: СПб
Контактная информация:

berkut, я не очень хорошо знаю пёрл и тем более php.
Вот что я делаю на perl:

Код: Выделить всё

$SIG{CHLD}='IGNORE';
  if (!defined ($pid = fork)) {
    die "Unable to fork: $!\n";  
  } elsif (! $pid) {  # it is a child branch
    close(STDIN); close(STDOUT); close(STDERR);
   # что-то очень долго делаем и отправляем репорт по завершении 
}
else {# this is the branch for the parent 
         print "Content-type: text/html\n\n";
         print "Ваш запрос принят к обработке. Через некоторое время".
                ."результаты будут отправлены на Ваш e-mail.";
         exit; #terminate parent process
}
В результате, юзверь видит сообщение, что процесс пошёл, спокойно закрывает браузер и идёт пить кофе.
Как только дочерний процесс завершит свою работу, хоть через минуту, хоть через пару часов, юзверь получит отчёт по почте.

Как такое же реализовать на php я понятия не имею. Твоя идея с перенаправлением потока в >/dev/null годится, но только если скрипту-демону на php не надо параметры передавать. Как-то у мну параметры в командной строчке передать не очень получилось.
Даже самый дурацкий замысел можно воплотить мастерски
Ответить