Периодически выполнять файлы PHP

Вопрос очень простой, я хочу выполнять несколько файлов php каждые «N» минут. Например:

каждые N минут { выполнить (script1.php) выполнить (script2.php) выполнить (script3.php) }

Я знаю о crontab, но я пытался найти другое решение. Какие-либо предложения? Заранее спасибо.


person Iker    schedule 23.02.2011    source источник
comment
crontab - лучшее решение. В PHP нет многопоточности, потому что вы не можете запустить поток и просто запускать его каждые N секунд. Что не так с кронтабом?   -  person Amir Raminfar    schedule 24.02.2011
comment
еще один голос за cron, если вы не можете его использовать по какой-то причине, есть другие коммерческие решения для автоматизации.   -  person Brandon Frohbieter    schedule 24.02.2011


Ответы (4)


Использование задания Cron — обычное решение. Можете ли вы объяснить, почему вы не хотите использовать CRON? Я также видел библиотеки, которые добавляют в вашу систему функции, подобные cron. Например, в мире Java/Groovy/Grails есть библиотека/плагин Quartz. Быстрый поиск в Google дал PHP-библиотеку под названием phpJobScheduler, которая кажется похожей на Quartz. Я никогда не использовал phpJobScheduler, поэтому не могу за него поручиться.

Мне было бы интересно, почему вы не хотите использовать crontabs для этого? Собираетесь ли вы стать основным специалистом по веб-операциям, управляющим этим сервером, или вы будете полагаться на существующую команду системных операторов? Возможно, вы захотите узнать их мнение, так как именно на них больше всего повлияет выбранный вами метод. Я обнаружил, что им нравится cron для простого планирования.

person Rich Sadowsky    schedule 23.02.2011
comment
Управление несколькими заданиями cron через стандартный интерфейс (или через множество панелей управления) может стать кошмаром для администратора. Его гораздо проще установить: phpjobscheduler.co.uk, тогда вы сможете легко просматривать и редактировать страницы задач за считанные секунды. (но я бы сказал так, потому что это мое приложение с открытым исходным кодом). - person Dave Walker; 10.04.2014

В Windows я использовал встроенную прогу под названием «Планировщик заданий». Что касается Linux, да, cron jobs — это ваш ответ.

person Jaanus    schedule 23.02.2011

Вы можете создать php-скрипт для вечного цикла, выполняющего X каждые N минут, и запускать команду с &, чтобы сделать ее фоновым процессом.

/path/to/php /home/user/bgscript.php &

Если вы хотите, чтобы он всегда работал, вам нужно будет добавить его в автозагрузку init.d или сервисы в зависимости от варианта * nix.

Это решение возможно, но лично я настоятельно рекомендую использовать crontab, он установлен, проверен и хорошо работает! Почему вы избегаете этого?

person martin blank    schedule 23.02.2011
comment
Основная причина, по которой я избегаю crontab, заключается в том, что я ничего не знаю об этом, и мне просто было проще работать с PHP. В любом случае, большое спасибо за ответ, я попробую использовать crontab. Кстати, возможно ли использовать crontab на вашем хостинг-сервере или это зависит от вашей хостинговой компании? - person Iker; 24.02.2011
comment
Это будет зависеть от вашего хоста и вашего хостинг-пакета, все они имеют разные уровни доступа, которые они предоставляют вам к вашему серверу. - person Infotekka; 24.02.2011

Вы можете создать скрипт и позволить ему работать в качестве демона и выполнять определенные задачи с заданным интервалом, но на самом деле это просто имитация cron ... и если у вас есть возможность запускать php-скрипт в качестве демона, вы также должны быть в состоянии запустить его как cronjob, так как для этого созданы cron.

Если вам нужна дополнительная информация о том, как запустить php-скрипт в качестве демона, прочитайте это отличное введение. Там также есть отличное сравнение между демоном и cron, которое стоит прочитать.

person ChrisR    schedule 23.02.2011