Самый эффективный способ выполнить почтовый скрипт php, проходящий через сотни записей - PullRequest
2 голосов
/ 09 марта 2011

У меня есть почтовый скрипт, который перебирает около 900 подписчиков (в базе данных), создает индивидуальное электронное письмо для каждого подписчика и отправляет через SMTP.Этот сценарий запускается вручную через браузер, однако количество задействованных записей привело к тому, что сценарий начал время ожидания частично.В тестах ошибка почти всегда превышала максимальное время выполнения Fatal Error (хотя однажды была ошибка, связанная с mail () и SMTP).Я думаю, что мне, вероятно, следует запускать сценарии такого типа из командной строки, однако сценарий по-прежнему должен запускаться вручную (через администратора CMS) - есть ли у кого-нибудь какие-либо предложения относительно хорошего способа справиться с этим?

Ответы [ 4 ]

1 голос
/ 09 марта 2011

Изменение ограничения времени выполнения только временно отложит проблему.

Вы не сказали, на какой ОС это работает - конечно, если у вас есть местный MTA, который может помочь, но правильное решениебудет порождать отдельный процесс.Обратите внимание, что в этом подходе есть ряд подводных камней - см. в этом посте , чтобы узнать, как это сделать правильно в системах типа Unix.

1 голос
/ 09 марта 2011

Я думаю, вы можете установить таймаут для скрипта PHP из скрипта.

Однако я бы предпочел использовать решение на основе CRON + PHP-CLI. Код PHP остается неизменным независимо от того, используете ли вы CGI или CLI, однако в режиме CLI не существует явного ограничения по времени.

0 голосов
/ 09 марта 2011

работает с cronjobs и каждый раз, когда cron выполняет сценарий, он может отправлять небольшое количество писем.

Например, Typo3 почтовый механизм вызывается каждый5 минут и проверит, нужно ли отправлять письма.

Таким образом, пользователь не запускает сценарий почтовой рассылки вручную.Пользователь отмечает только новостную рассылку, которую должен отправить механизм почтовой программы.

0 голосов
/ 09 марта 2011

set_time_limit (0); должен сделать трюк.

О более эффективном способе сказать особо нечего, если мы не увидим ваш код ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...