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