Вызовите еще один PHP-скрипт и верните элемент управления пользователю до завершения другого скрипта

Я на самом деле пытаюсь применить это к скрипту, который отправляет электронную почту. Отправляющая часть электронной почты занимает несколько секунд, которая слишком длинная. Я хочу, чтобы первый скрипт выполнял свой материал и запускал другой скрипт (который отправляет электронную почту), но я хочу, чтобы первый скрипт возвращал управление пользователю, не дожидаясь, пока второй скрипт отправит электронное письмо.

Варианты, которые я рассмотрел:
Cron Job: для этого мне придется работать в cron, как раз каждые 2 минуты. Невозможно!
PHP-скрипт, активирующий работу cron, которая дезактивирует себя, когда это делается : Хорошо, но как это сделать? Может ли PHP это сделать?

Вы также можете вызвать оболочку и вручную вызвать файл PHP. Никакой cron не требуется и не ждет.

http://www.php.net/manual/en/function.exec.php

Из раздела « Notes

«Если программа запускается с этой функцией, чтобы она продолжала работать в фоновом режиме, вывод программы должен быть перенаправлен на файл или другой выходной поток. В противном случае PHP будет зависать до тех пор, пока выполнение программа заканчивается ».

Другое решение:

  • Ваш скрипт помещает маркер где-нибудь (DB / файловая система), когда нужно отправлять почту (токен может содержать данные для генерации почты)
  • Демон (может быть написан на php) работает в фоновом режиме, ища токены и «ест» их для отправки почты

Я использую такое решение довольно много …

Я использую jQuery и AJAX для создания подобных вещей для PHP-скриптов, которые занимают много времени.

То, что вы хотите использовать, называется так называемым beanstalkd

Подробности: Как я могу получить список всех заданий в трубке beanstalk?

Это позволит вам ставить в очередь задания (сделать 1, затем 2, затем 3. затем 4), вы можете даже распределить эти задачи на серверах (да для заданий php!).