Мне интересно, есть ли способ запустить отдельный поток в php для отправки и отправки по электронной почте. У меня есть небольшая веб-служба, которая берет некоторую информацию из приложения iPad, а затем вставляет данные в db и отправляет электронное письмо после этого. Проблема в том, что иногда письмо занимает слишком много времени, и запрос iPad истекает. Есть ли способ отправить электронное письмо по отдельной теме? Я в основном хочу сказать, что iPad все было успешным до отправки по электронной почте.
Пример кода:
... Process info and insert into DB echo "success"; //this should be returned to the iPad right away. //start new thread here or possibly fork??? $email->send();
Благодаря!
Как уже указывалось, PHP не обладает многопоточными возможностями, но обладает многофункциональными функциями. Вы можете создать и вызвать второй PHP, который первым вызовет для обработки электронной почты. Этот скрипт должен иметь возможность запускаться в командной строке.
exec('nohup php emailscript.php >/dev/null 2>&1 &');
Очень важно иметь nohup, и все после него. Это то, что делает процесс в фоновом режиме и перенаправляет весь вывод. В противном случае PHP будет ждать завершения и возврата. Nohup будет следить за тем, чтобы сценарий не был убит ОС при завершении родительского процесса вызова.
Вам нужно каким-то образом передать электронную почту в скрипт. Вы можете поместить информацию в базу данных и передать ей идентификатор записи, передать информацию в качестве параметров или несколько других параметров.
Я считаю, что вы хотите выполнить ob_flush()
чтобы отправить данные обратно клиенту и позволить вашему скрипту PHP продолжать выполнение. Обратите внимание, что вам нужно выполнить отправку данных обратно клиенту, поскольку вы не можете отправить его после ob_flush()
.