Какие есть варианты для выполнения сценария PHP в определенное время каждый день? - PullRequest
0 голосов
/ 12 июня 2009

У меня есть PHP-скрипт, который нужно запускать в определенное время каждый будний день. cron или планировщик задач Windows - единственный способ сделать это?
Есть ли способ настроить это из другого скрипта PHP?

Ответы [ 9 ]

5 голосов
/ 12 июня 2009

Зависит от того, насколько точным должно быть время. Использованная мною техника (получившая название «cron для бедного человека») заключается в том, чтобы часто используемый скрипт (например, домашняя страница сайта) запускал задачу при первой загрузке страницы через некоторое время (отслеживал базы данных).

Если вам нужна какая-либо гарантированная точность, хотя, cron или запланированное задание Windows - действительно лучший вариант. Если ваш хост не поддерживает их, пришло время получить лучший.

2 голосов
/ 12 июня 2009

Что ж, поскольку сеть представляет собой механизм извлечения, вам необходимо выполнить какое-то действие, которое вызовет выполнение сценария PHP. cron - это опция для * nix и планировщик задач для windows. Вы также можете написать свой собственный сервис, который имеет таймер, но только при необходимости, это часто встречается в службах 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
2 голосов
/ 12 июня 2009

Помимо cron или Scheduled Tasks, у вас может быть свой PHP-скрипт, чтобы всегда его запускать. Процесс должен спать (в цикле), пока не достигнуто время. Затем процесс может выполнить оставшиеся функции / методы. Или вы можете настроить другой сценарий (который будет действовать как демон), чтобы проверить время и выполнить другой сценарий.

1 голос
/ 12 июня 2009

Если это удаленный сервер, к которому у вас нет доступа к cron, вы можете настроить на своем компьютере планировщик cron / windows, чтобы открыть веб-браузер на странице, содержащей скрипт, который вы хотите запустить

1 голос
/ 12 июня 2009

Cron, безусловно, лучший способ запланировать что-либо на * nix.

0 голосов
/ 12 июня 2009

В проекте Uniform Server есть несколько хороших предложений по , имитирующим cron в средах, где cron недопустим. Тем не менее, если cron вообще вариант, используйте его.

0 голосов
/ 12 июня 2009

Вам нужно будет использовать задание cron (в Linux / Unix) или запланированное задание в Windows. Вы могли бы иметь другой сценарий, работающий непрерывно, который проверяет время и выполняет сценарий с заданным интервалом, но использование механизма, предоставляемого ОС, проще в управлении и устойчиво к перезапускам и т. Д.

0 голосов
/ 12 июня 2009

Вы можете написать долгосрочный скрипт, который запускает ваш основной скрипт в заранее определенное время, но он будет очень ненужным, подверженным ошибкам, и в основном это будет «перезапись cron в phph».

Использование реального крона само по себе будет более простым и надежным решением. Если вы упаковываете приложение, вы можете поместить файл в /etc/cron.d, который содержит одну строку cron, в которой выполняется ваше приложение.

0 голосов
/ 12 июня 2009

Вы, вероятно, хотите использовать cron (или запланированные задачи Windows).

Если вы действительно хотите, вы можете настроить другой скрипт php для непрерывного запуска с бесконечным циклом (с командой сна внутри цикла, скажем, в течение 30 секунд или около того), а затем, когда вы достигнете желаемого дня / времени, выполните команду другой скрипт через командный вызов оболочки. Хотя это возможно, я не могу думать, есть ли одна веская причина использовать этот метод, а не cron / запланированные задачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...