|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Igor Sysoev 2:5020/400 21 Nov 2001 17:12:15 To : Dmitry Chertischev Subject : Re: Вопрос про fork() -------------------------------------------------------------------------------- Dmitry Chertischev <dim-dim@ariadnamedia.com> wrote: > Hужно было написать CGI-скрипт, который бы отправлял письма на кучу > адресов. При этом его работа занимает кучу времени. Hужно, чтобы скрипт > сказал в броузер что-то типа "Рассылка в процессе", а сам бы занялся > собсвтенно рассылкой. > > Я сделал так: > if (!fork()) { > eval { > # делаем долгую работу, т.е. рассылаем почту > } > } else { > print qq^<br><p align="center">Рассылка в процессе...</p>^; > } > > Все работает отлично: скрипт говорит "Рассылка в процессе..." и > рассылает почту. Hо при этом броузер держит соединение с веб-сервером и > заканчивает соединение только после того как скрипт закончит рассылку > писем. При этом, если нажать в броузере ESC, то броузер разрывает > соединение, а скрипт при этом продолжает работу, что в принципе и нужно. > > Как бы сделать, что после вывода "Рассылка в процессе..." броузер сразу > бы закрывал соединение? Hужно делать два форка для того, чтобы процесс демонизировался: if (!fork) { if (!fork) { # работа } else { exit 0; } } else { wait; print; } -- Игорь Сысоев --- ifmail v.2.15dev5 * Origin: Rambler Office news site (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/165964f5cf0a5.html, оценка из 5, голосов 10
|