У меня есть PHP-скрипт, который нужно выполнять к концу каждого месяца. Как мне это сделать без использования cron в Unix-подобных системах или планировщика заданий в системах Windows? Разве в php для этого нет встроенной функции? Потому что использование cron/scheduler не так уж и переносимо, IMO.
запланированное выполнение PHP-скрипта без cron
Ответы (3)
Php — это просто язык сценариев, а не процесс, который знает о времени и может запускать события в нужные моменты.
После того, как вы обосновались на сервере, вам не нужно беспокоиться о переносимости: миграция в другое место не будет автоматическим процессом, потому что среда может сильно отличаться.
Так что придерживайтесь cron или напишите себе слой, не зависящий от ОС.
Единственный другой способ — активировать его при загрузке веб-сайта. Например, вы должны сохранить время последнего запуска скрипта. Затем каждый раз, когда страница загружается, вы будете проверять, не пора ли ее запустить. Если это так, то вы запустите его как часть загрузки страницы. Конечно, это зависит от (1) того, что задача очень быстрая, и (2) что задача не должна выполняться точно по расписанию, вплоть до секунды. Примерно так wp_cron()
работает в Wordpress.
В системе, над которой я работал, у меня был небольшой модуль, в котором сохранялся последний запуск скрипта, и при каждом запуске основного скрипта он проверял, не нужно ли запускать скрипт. В случае, если это должно было быть сделано, это произошло до того, как что-либо еще было выполнено, поэтому система все равно имела правильные данные, даже если периодический сценарий не был запущен «вовремя». Он также проверял, не должен ли скрипт запускаться более одного раза, и при необходимости запускал его несколько раз. Немного грубо, но дает правильные результаты без всего, кроме PHP/mysql.