Отсылка писем на большое количество адресов

  • Автор темы Автор темы svirol
  • Дата начала Дата начала

svirol

Новичок
Отсылка писем на большое количество адресов

Есть программа, которая делает рассылку по адресам из базы (функция mail()).
При небольшом количестве адресов все работает нормально, а вот когда встает вопрос о рассылки нескольких тысяч писем, то выполнение прекращается по истечении некоторого времени (программа запускается через web-интерфейс).
Как сделать так, чтобы рассылка не прерывалась?
 
А можно ли сделать так, чтобы запускался бы другой php скрипт с некоторыми параметрами, а данная программа выполнялась бы дальше при успешном запуске без ожидания конца рассылки? Как лучше?
 
Может повесь в cron скрипт, которая и будет рассылать то что надо, не надо тогда с max_execution_time что-то думать
 
Автор оригинала: begemot
Может повесь в cron скрипт, которая и будет рассылать то что надо, не надо тогда с max_execution_time что-то думать
Да в том то и дело, что если бы нужна была бы рассылка в определенное время - все было бы сдорово.
Но рассылка должна запускаться вручную через Web-интерфейс. :(
 
У меня была тоже такая беда, но при увеличении аттачей поставь set_time_limit(0); и она будет выполняться до предела.
 
Автор оригинала: M_Maniac
У меня была тоже такая беда, но при увеличении аттачей поставь set_time_limit(0); и она будет выполняться до предела.
Я тоже так хотела, но дело в том, что редакторы - люди не понимающие в программировании и нетерпеливые. Могут сразу уйти на другую страницу, закрыть окно, посчитав, что выполнение завршилось или зависло, понажимать на Refresh... И что тогда?
Как бы сделать так, чтобы программа запускалась, выдавала истину, если прощесс нормально запущен и уже не зависела от внешних действий?
 
Всем большое спасибо за ответы.
Не поможете ли еще? :(
У меня есть такая строка:
PHP:
exec("/usr/bin/php /opt/var/www/russiais/html/admin/report/send.php?id=$id&user=$user> /dev/null 2>/opt/var/www/russiais/html/admin/errsend &");
Все здорово работает, программа запускается, но вот ошибки не пишутся, даже если пути в строке в exec указаны неправильно.
В чем ошибка?
 
нет, 2 - это поток ошибок как раз.
только я не уверен PHP-скрипт выводит ошибки в него.
 
Автор оригинала: tony2001
нет, 2 - это поток ошибок как раз.
только я не уверен PHP-скрипт выводит ошибки в него.
То есть, я не могу проверить результаты выполнения запущенной программы и запустилась ли она вообще? Ведь именно для этого я и хотела перенаправить вывод ошибок в файл - сделать что-то вроде лога ошибок для данного процесса.
 
И еще вопрос - можно ли проверить, что скрипт действительно запустился, если его выполнение не зависит от запускающего скрипта и может занять довольно много времени? А в запускающем скрипте желательно вывести сообщение, началось ли выполнение команды?
 
Читаю в manual:
For those who want to execute a .php script to run in the background, from
a .php web page...

exec("php script.php parameters 2>dev/null >&- <&-
>/dev/null &");

Where...
- php is the path to your php script executer (php has to be specifically
complied to be to do this)
- script.php is the script
- parameters are none or more parameters
- 2>dev/null redirects the stderr to a file
- <&- switches off the stdin
- >&- switches off the stdout
- >dev/null redirects all other output to the file dev/null
- & direct script to run in background
Отлично, пишу
PHP:
exec("/usr/local/bin/php /opt/var/www/russiais/html/admin/report/send.php id=$id user=$user 2>>/opt/var/www/russiais/html/admin/report/errsend  >&- <&- >>/opt/var/www/russiais/html/admin/report/logsend &", $ar, $res);
Все выполняется ($res=0), но когда для теста я ввожу неверный путь, все равно возвращается $res=0, то есть, что все нормально.
При этом в файл errsend пишется сообщение об оштбке, как и должно быть.
Можно ли определить, запустилась ли программа?
 
Сверху