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