Добавление асинхронных действий, подобных этой, в скрипт PHP не просто, но может добавить огромный выигрыш в производительности, как вы ищете.
Первый подход
Сохраните на будущееготовые электронные письма или некоторые метаданные о них в базе данных и пометить их как обработанные: false.Затем задание cron или какой-либо другой демон / процесс, выполняющийся на сервере, периодически проверяет эту таблицу базы данных на предмет отправляемых писем или того, что вы выгружаете.Это, вероятно, самый безопасный способ, поскольку у вас есть отчет о том, когда что-то запрашивалось, а затем фактически отправлялось.
Второй подход
Для особенно сложной работы, которую мне пришлось выполнить, я фактически уволилсякоманда bash, которая выполнялась в фоновом режиме:
$job = "/bin/myscript $param1 $param2";
$job = "$job > /dev/null 2> /dev/null";
$cmd = "bash -c \"$job &\"";
exec($cmd)
Обратите внимание, что в этом случае вы действительно не можете контролировать вещи после вызова exec ().
Others
Вот пример, аналогичный моему подходу №2: http://robert.accettura.com/blog/2006/09/14/asynchronous-processing-with-php/
Gearman - еще один инструмент для решения асинхронных задач PHP.Они даже упоминают, что «Zend Framework теперь использует его для выполнения перехватов после фиксации без задержек взаимодействия с коммиттером» http://css.dzone.com/articles/asynchronous-processing-php