Я пытаюсь составить список различных подходов для выполнения запланированных задач на PHP. Я намерен предоставить универсальный способ запуска запланированных задач в PHP. Пока что у меня есть:
1) Анализ трафика сайта. Если вы получаете 770 обращений в день (то есть одно попадание в 2 минуты), и вы запланировали выполнение задачи на 6:00, а посетитель запросил страницу на 5:59, то запустите задачу, потому что следующий посетитель будет прибыть в 6:01 утра в среднем. Запустите = exec ('/ usr / bin / php -f /home/account/cron.php') в этом случае.
(+) Работает на всех платформах, если пути верны.
(-) Требуется некоторая мощность процессора.
(-) Требуется exec ().
(-) Не является точным на небольших сайтах или на сайтах с огромными скачками трафика.
2) Улучшенная версия выше. Когда пользователь запрашивает страницу и задача должна быть запущена, не используйте exec (), а include () после того, как вы сбросили содержимое для пользователя.
(+) Работает на всех платформах.
(+) Нет exec ().
(-) Требуется некоторая мощность процессора.
(-) Не является точным на небольших сайтах или на сайтах с огромными скачками трафика.
3) Запуск отдельного фона процесса, чтобы он работал в постоянном цикле. Предоставьте интерфейс администратора, который позволит вам «начинать» и «заканчивать» «службу». Затем он будет использовать fsockopen () для вызова сценария .php, который выполняется бесконечно. Он использует sleep (), чтобы не использовать ресурсы и просыпаться, когда настало время (см .: time_sleep_until ()). Он может искать файлы и читать их, чтобы понять, когда выполнять какие задачи. Можно создать файл «run-daily-3.00am», который заставит планировщик выполнить код внутри него.
(+) Работает на всех платформах.
(+) Нет exec ().
(+) Может быть достаточно точным (например, если он спит каждую минуту).
(-) Нестабильно - сбой сервера полностью останавливает планировщик.
(-) Некоторые хосты не любят запускать процесс 24/7/365 = ресурс боров?
4) Запустите exec ('crontab') напрямую в Linux и т. П.
(+) Это не боров ресурсов.
(+) Точно.
(-) exec ().
(-) Работает не на всех платформах.
5) Запрос учетных данных cPanel и создание POST для его создания / управления / удаления крон.
(+) Точно
(+) Это не боров ресурсов.
(-) Плохо для безопасности
(-) Требуются данные пользователя = снижение удобства использования
(-) Не работает на всех платформах (требуется cPanel, который не работает в Windows).
(-) Требуется cPanel.
Есть еще идеи?