У меня есть PHP-скрипт, который нужно запускать в определенное время каждый будний день. Планировщик задач cron
или Windows – единственный способ сделать это?
Есть ли способ установить это из другого скрипта PHP?
Зависит от того, насколько точны сроки. Метод, который я видел, используется (получивший название «бедный человек»), должен иметь часто доступный скрипт (например, домашняя страница сайта), который запускает задачу при загрузке первой страницы через определенное время (отслеживается в база данных).
Если вам нужна какая-то гарантированная точность, тем не менее, cron или запланированная задача Windows – действительно лучший вариант. Если ваш хост не поддерживает их, пришло время получить лучшее.
Помимо Scheduled Tasks
cron
или Scheduled Tasks
, вы можете всегда использовать свой PHP-скрипт. Процесс должен спать (в пределах цикла), пока не достигнет времени. Затем процесс может выполнять оставшиеся функции / методы. Или вы можете настроить другой скрипт (который будет действовать как демон), чтобы проверить время и выполнить другой скрипт.
Ну, так как веб – это механизм вытягивания, у вас должно быть какое-то действие, которое приведет к выполнению скрипта PHP. cron – это опция для * nix и планировщик задач в окнах. Вы также можете написать свой собственный сервис с таймером, но только в случае необходимости, это распространено в службах Windows для обновлений, рабочих мест и т. Д.
Один из способов сделать это – в задании cron просто вызвать скрипт php для каждого необходимого действия. Или один скрипт php, который выполняет другие задачи. Проблема с сетевыми задачами, такими как PHP, – это таймауты. Убедитесь, что ваши задачи находятся под 60-90 секундами. Если нет, вы можете использовать скрипты python, perl или ruby или даже bash для работы, а не скрипта PHP.
cron кажется лучшим вариантом для вас. Вам нужно будет вызвать ваш скрипт с помощью wget. Примеры здесь: http://www.thesitewizard.com/general/set-cron-job.shtml
Например, это запускает скрипт каждый день в 11:
30 11 * * * /usr/bin/wget http://www.example.com/cron.php
Крон, конечно, безусловно лучший способ запланировать что-либо на * nix.
Если это на удаленном сервере, у вас нет доступа к cron, вы можете настроить планировщик cron / windows на своем компьютере, чтобы открыть веб-браузер на странице, содержащей скрипт, который вы хотите запустить
Вероятно, вы хотите использовать cron (или запланированные задачи Windows).
Если вы действительно захотите, вы можете настроить еще один php-скрипт для непрерывной работы с бесконечным циклом (с командой сна внутри цикла, скажем, в течение 30 секунд или около того), а затем, когда вы достигнете желаемого дня / времени, выполните другой скрипт через командный вызов оболочки. Хотя это возможно, я не могу думать, если одна хорошая причина использовать этот метод, а не cron / запланированные задачи
Вы можете написать длинный сценарий, который запускает ваш основной скрипт в предопределенные моменты времени, но это будет очень ненужным, подверженным ошибкам, и в основном это будет «cron rewrite in phph».
Использование самого реального cron будет проще и более надежным решением. Если вы упаковываете приложение, вы можете поместить файл в /etc/cron.d, который содержит одну линию cron с вашим приложением.
Вам нужно будет использовать задание cron (под Linux / Unix) или запланированную задачу под Windows. У вас может быть другой скрипт, работающий на постоянной основе, который проверяет время и выполняет скрипт с заданным интервалом, но с использованием механизма, поставляемого с ОС, легче управлять и отказоустойчиво для перезапуска и т. Д.
В проекте Uniform Server есть несколько хороших предложений по подражанию cron в средах, где cron неприемлем. Тем не менее, если cron вообще вариант, используйте его.