Как я могу использовать этот PHP скрипт времени, чтобы запланировать скрипт без cron? - PullRequest
1 голос
/ 31 декабря 2011

Я нашел скрипт, который предположительно запланировал выполнение скрипта. Я очень новичок в PHP, и я не хочу использовать cron. Вот скрипт, который я нашел:

<?php 
$hour = date('G');
$day  = date('N'); // 1..7 for Monday to Sunday

if (($hour >= 5  && $hour <= 7)  // 5am - 7am
||  ($hour >= 10 && $hour <= 12) // 10am - 12 noon
||  ($hour >= 15 && $hour <= 19) // 3pm - 7pm
||  ($day == 5)                  // Friday
) { ?>
 //my script
<?php } ?>

Поскольку я так мало знаю, если я поставлю свой сценарий там, где он говорит, будет ли он выполняться в это определенное время каждый раз, когда это происходит? Заранее спасибо! -Бен

1 Ответ

4 голосов
/ 31 декабря 2011

Лучше всего использовать cron.Это довольно просто, хотя поначалу это может показаться пугающим:

Шаг 1. Создайте скрипт, который будет запускать cron

Например, поместите его в <your-app-root>/cron.php:

<?php
$CRON_KEY = "some-random-value-here";
if ($_GET['key'] != $CRON_KEY) {
    header(“HTTP/1.0 403 Forbidden”);
    echo "You have no rights to access this page.";
    exit();
}

// Your code here

Шаг 2 - Добавить запись crontab

Чтобы автоматически выполнить сценарий cron.php, вы можете добавить строку, подобную этой, к /etc/crontab:

## This will run each day at 2:30 AM
30 2    * * *   www-data    wget -O - -q http://yourdomain.com/cron.php?key=some-random-value-here &> /tmp/my-app-cron.log

..где some-random-value-here должно соответствовать случайному значению, помещенному в скрипт PHP.Это функция безопасности, которая запрещает кому-либо запускать ваш код cron.

Описание строки Crontab

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

Вы также можете использовать диапазоны, например, для запуска сценария каждый день в 5, 7, 8, 12, 13, 14, 15, 20, вы можете использовать это:

0 5-8,12-15,20    * * *    ...

Вы также можете использовать «шаги», например, для запуска каждые 5 минут (рекомендуется для повторяющихся заданий, таких как задачи индексирования / очистки и т. Д.):

*/5 *    * * *    ...

Шестым аргументом является пользователь, который будетиспользоваться для выполнения команды.Вы можете использовать любого пользователя, которого вы хотите, www-data, никто, ваш пользователь и т. Д. Лучше не использовать root здесь, если это действительно не нужно по какой-то причине.

Оставшаяся часть строки - этокоманда, которая будет запущена в запланированное время.

Часть &> /tmp/my-app-cron.log сделает все выходные данные вашего последнего выполнения cron.php для хранения внутри /tmp/my-app-cron.log.

Подробнее ...

Для получения дополнительной информации об использовании cron вы можете обратиться к crontab(5):

$ man 5 crontab
...