Запуск PHP-скрипта при нажатии кнопки в фоновом режиме (независимо от изменения страницы пользователя или выхода из браузера) - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть скрипт, который анализирует большой объем исторических данных с помощью запросов MySQL и других манипуляций с PHP.

По сути, это генератор "Order Report", который выводит много данных и формирует их в массиви затем, наконец, закодировать его в json и сохранить на моем сервере.

Я хотел бы оптимизировать их больше, но для создания 30-дневного отчета требуется около 10-15 секунд, для 90 дней требуется 45 секунд, чтобыминута на завершение, 180 дней где-то от 2-3 минут, и в течение всего года для завершения сценария обычно требуется более 5 минут.

Как и eBay и Amazon, я думаю, из-за времени загрузкинеобходима система «Очередь файлов», так как пользователь не собирается ждать 5 минут в сценарии загрузки в ожидании годового отчета.

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

Моя единственная другая мысль - возможно, иметь работу cron вместе стаблица MySQL, которая вставляет пользовательский запрос, но в будущем CRON придется запускать примерно раз в минуту, весь день, каждый день, без остановки, чтобы проверить, был ли отправлен запрос отчета.

Это кажетсяправдоподобно, но, возможно, не идеально, так как запуск cron каждую минуту 24/7/365, кажется, привнесет немного багажа в его непрерывность (особенно потому, что генерируемые отчеты будут выполняться не очень часто).

Кто-нибудь может порекомендовать / предложить маршрут действий, который не будет обременительным для моего сервера, и все равно будет работать и завершаться независимо от действий пользователя?

...