Проблема
У меня есть форма, которая при отправке запускает базовый код для обработки отправленной информации и вставляет ее в базу данных для отображения на веб-сайте уведомлений.Кроме того, у меня есть список людей, которые подписались на получение этих уведомлений по электронной почте и SMS.Этот список на данный момент тривиален (всего около 150), однако этого достаточно, чтобы циклически просмотреть всю таблицу подписчиков и отослать более 150 электронных писем.(Электронные письма отправляются индивидуально в соответствии с запросами системных администраторов нашего почтового сервера из-за массовых почтовых политик.)
В течение этого времени лицо, разместившее предупреждение, будет сидеть на последней странице формы дляпочти минуту без какого-либо положительного подтверждения того, что их уведомление публикуется.Это приводит к другим потенциальным проблемам, все, у которых есть возможные решения, которые, я считаю, не идеальны.
Во-первых, автор может подумать, что сервер отстает, и снова нажмите кнопку "Отправить"., в результате чего скрипт запускается заново или запускается дважды.Я мог бы решить эту проблему с помощью JavaScript, чтобы отключить кнопку и заменить текст, чтобы сказать что-то вроде «Обработка ...», однако это далеко не идеально, потому что пользователь все равно будет застревать на странице во время выполнения скрипта.(Кроме того, если JavaScript отключен, эта проблема по-прежнему существует.)
Во-вторых, автор может преждевременно закрыть вкладку или браузер после отправки формы.Сценарий будет продолжать работать на сервере до тех пор, пока он не попытается выполнить обратную запись в браузер, однако, если пользователь затем просматривает любую страницу в нашем домене (пока сценарий еще выполняется), браузер зависает, загружая страницу, пока сценарий не завершится,(Это происходит только тогда, когда вкладка или окно браузера закрыты, а не все приложение браузера.) Тем не менее, это не идеально.
(возможно) Решение
Я решил, что хочу разбить часть скрипта на «электронную почту» на отдельный файл, который я могу вызвать после публикации уведомления.Первоначально я думал поместить это на страницу подтверждения после того, как уведомление было успешно опубликовано.Тем не менее, пользователь не будет знать, что этот скрипт запущен, и любые аномалии не будут им очевидны;Этот сценарий не может завершиться сбоем.
Но что, если я могу запустить этот сценарий в качестве фонового процесса?Итак, мой вопрос заключается в следующем: как я могу выполнить сценарий PHP для запуска в качестве фоновой службы и работать полностью независимо от того, что пользователь сделал на уровне формы?
РЕДАКТИРОВАТЬ: Это нельзя быть cron'ed.Он должен запускаться сразу после отправки формы.Это высокоприоритетные уведомления.Кроме того, системные администраторы, работающие на наших серверах, запрещают запускать кроны чаще, чем 5 минут.