Вызовите еще один 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-скриптов, которые занимают много времени.
Ответ 4
То, что вы хотите использовать, называется beanstalkd
Детали: Как я могу получить список всех заданий в трубке beanstalk?
Это позволит вам ставить в очередь задания (сделать 1, затем 2, затем 3. затем 4), вы можете даже распределить эти задачи на серверах (да для заданий php!).