|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Alexander V. Gaiduk 2:5020/400 15 Dec 2004 18:09:00 To : Victor Wagner Subject : Hа: Hа: Чтобы и скрипт работал и пользователь не заснул -------------------------------------------------------------------------------- > AVG> у меня такое работало несколько лет, пока проект не закрылся > AVG> самоликвидацией спонсора. > > AVG> sub send_email { > AVG> &database_close; > AVG> if (fork()) { exit; } > AVG> foreach my $ml (keys %mails) { > AVG> open(MAIL, "|$mta -oi -t -odq ".$mails{$ml}) || die "Can't open $mta"; > AVG> print MAIL "From: $from\n"; > AVG> print MAIL "Reply-to: $from\n"; > AVG> print MAIL "To: $mails{$ml}\n"; > > Вообще-то ты зря создаешь такую немерянную нагрузку на сервер, запуская > количество процессов сендмейла, равную количеству адресатов и только сервер был выделенный, полностью в моем распоряжении. > ради того, чтобы каждому его адрес в To: прописать. Прописал бы туда > что-нибудь вроде Vodnik WEB Servece User <bounce@yourserver.ru> и слал > бы одной командой. я думал об этом, но спонсор проекта умер быстрей, чем я собрался это переделать :)) > Я, правда, в таких случаях использую open "|-" и списковую форму exec, > чтобы гарантировать что никакой shell не попытается проинтерпретировать > список адресов. А то вдруг у кого в базе окажется адрес вида > mail@nowhere.com;rm -rf / адреса я проверял _перед_ тем, как занести в базу. > Hо к заданному вопросу это не имеет никакого отношения. Рассылкой почты > в течение нескольких часов у тебя занимается не часть твоего скрипта, а > работающий на сервере МТA, в очередь которому ты это дело (указав опцию > -odq) очень быстро впихнул. без форка клиент отваливался по таймауту, т.е скрипт работает в натуре долго. и с fork в скрипте top показал, что рядом с 5...10-ю, сменяющими друг-друга сэндмылами все это время висел в памяти сам скрипт. ладно, это все в прошлом. я к тому, что, имхо, для долгих процессов, управляемых через вэб, вполне нормально на каком то этапе отфоркаться от того, что живет под апачем, и продолжить жизнь самостоятельно до победного конца. --- ifmail v.2.15dev5.3 * Origin: Internet-Arkhangelsk Company (2:5020/400) Вернуться к списку тем, сортированных по: Архивное /ru.cgi.perl/8926ea83d81a.html, оценка из 5, голосов 10
|