запланированное выполнение PHP-скрипта без cron

У меня есть PHP-скрипт, который нужно выполнять к концу каждого месяца. Как мне это сделать без использования cron в Unix-подобных системах или планировщика заданий в системах Windows? Разве в php для этого нет встроенной функции? Потому что использование cron/scheduler не так уж и переносимо, IMO.


person astralmaster    schedule 01.09.2012    source источник
comment
Ответ отрицательный - для этого и нужен cron/планировщик задач. Единственный другой вариант — запуск при запуске другого PHP-скрипта, который, как вы надеетесь, запустит пользователь в нужное время.   -  person Robbie    schedule 01.09.2012
comment
Вот для чего нужны cron и другие методы планирования? Вы смотрели cron, это действительно просто.   -  person mtk    schedule 01.09.2012
comment
да, но я не хочу, чтобы мои клиенты выполняли какую-либо ручную работу по настройке простого скрипта на сервере.   -  person astralmaster    schedule 01.09.2012
comment
Тогда вы возможно захотите использовать MySql: dev .mysql.com/doc/refman/5.1/en/events.html   -  person hakre    schedule 01.09.2012
comment
@hakra интересно. Может ли он запускать выполнение php-скрипта или он просто ограничен использованием внутри базы данных?   -  person astralmaster    schedule 01.09.2012
comment
Я думал, вы не хотите использовать систему, а PHP, как и cron, на самом деле является системной командой.   -  person hakre    schedule 01.09.2012


Ответы (3)


Php — это просто язык сценариев, а не процесс, который знает о времени и может запускать события в нужные моменты.

После того, как вы обосновались на сервере, вам не нужно беспокоиться о переносимости: миграция в другое место не будет автоматическим процессом, потому что среда может сильно отличаться.

Так что придерживайтесь cron или напишите себе слой, не зависящий от ОС.

person moonwave99    schedule 01.09.2012

Единственный другой способ — активировать его при загрузке веб-сайта. Например, вы должны сохранить время последнего запуска скрипта. Затем каждый раз, когда страница загружается, вы будете проверять, не пора ли ее запустить. Если это так, то вы запустите его как часть загрузки страницы. Конечно, это зависит от (1) того, что задача очень быстрая, и (2) что задача не должна выполняться точно по расписанию, вплоть до секунды. Примерно так wp_cron() работает в Wordpress.

person Abraham    schedule 01.09.2012
comment
благодаря. но опять же, я зависим от того, кто первым загрузит страницу. - person astralmaster; 01.09.2012

В системе, над которой я работал, у меня был небольшой модуль, в котором сохранялся последний запуск скрипта, и при каждом запуске основного скрипта он проверял, не нужно ли запускать скрипт. В случае, если это должно было быть сделано, это произошло до того, как что-либо еще было выполнено, поэтому система все равно имела правильные данные, даже если периодический сценарий не был запущен «вовремя». Он также проверял, не должен ли скрипт запускаться более одного раза, и при необходимости запускал его несколько раз. Немного грубо, но дает правильные результаты без всего, кроме PHP/mysql.

person Kuro    schedule 01.09.2012