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

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

Параметры, которые я рассмотрел:
Задача Cron: Для этого мне нужно, чтобы работа cron выполнялась примерно каждые 2 минуты. Невозможно! PHP скрипт активирует задание cron, которое дезактивирует себя, когда сделано: Хорошо, но как это сделать? Может ли PHP это сделать?

Ответ 1

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

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

Из раздела Notes

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

Ответ 2

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

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

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

Ответ 3

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