|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Julia Fadeeva 2:5070/66.22 16 Feb 2001 16:21:37 To : All Subject : снова форк -------------------------------------------------------------------------------- ситуация такая: есть действие, выполняемое в фоновом режиме - юзеру надо пообщещать золотые горы и для него все закончить. Hаблюдаю странное, вот тестовый примерчик: =========================== print "Заголовок<br>\n"; $pid = fork(); die("Can not fork") if $pid < 0; if ( $pid ) { print "Слегка подожите, потом проверьте емейл<br>\n"; close(STDOUT); exit(0); } #то, что делается незаметно для юзера #небольшой цикл, чтобы процесс поработал хотя бы с минуту $i = 0; while ($i <= 9999999) { $i++; } #отмылить юзеру результат open(OUT,$MAILCOMMAND) || print "Error open sendmail pipe"; ............... close(OUT); =========================== Когда выполняю в шелле - все в порядке, печатает: =========== Заголовок Подождите и проверьте емейл =========== и отваливается, потомок с минуту присутствует в списке процессов, потом исчезает (у нас система зомбей сразу стреляет). Если вызываю из браузера, картина другая: печатает заголовок и просьбу подождать, потом пауза (примерной длительности работы остальной части скрипта), и потом опять печатает заголовок и просьбу. Почему такое бывает? Чем вызов из шелла в даннном случае отличается от вызова через браузер? Julia --- GoldED/386 2.50+ * Origin: Шубки - долой, шапки - в сторону (с) ИРП (2:5070/66.22) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/33243a8d4761.html, оценка из 5, голосов 10
|