2014-10-26 3 views
4

Я пытался делать случайные задания cron, где я выбираю дату и час месяца, но минута рандомизирована.Создать случайную минуту работы cron на конкретную дату и час

Моя первая попытка была запустить хрон каждый мин, а затем сравнить случайную дату с датой сегодняшней:

Я вставил случайную дату в столбец базы данных fake_time в формате 2014-10-26 17 rand(0,59). На странице php, где я запускаю cron каждый мин:

if($row["fake_time"] == date("Y-m-d H i")){ 
    //do stuff 
} 

И это сработало отлично. Но потом я узнал, что я не могу запустить cron каждый мин, потому что мой хозяин (хост-агент) не позволит мне! У вас есть идеи о том, как я могу это сделать любым другим способом?


Или я просто установить его на https://www.easycron.com/ вместо этого?

+1

Это хороший пример для вас, проверить это: http://stackoverflow.com/questions/9049460/cron-jobs-and-random-times- in-giving-hours –

+0

Что может сделать ваш хостел _does_? Я думаю, что решение в комментарии @ M.Abooali должно работать достаточно хорошо. – andy

+0

Большой вопрос: почему вы хотите это сделать?Например, WordPress уже имеет плагин для проверки доступности сайта. – Leptonator

ответ

1

Я думаю, что вы в настоящее время ограничено количеством рабочих мест хрон вы можете запустить в день, IIRC У хозяина есть дневной лимит для базового плана. Чтобы обойти это ограничение, ИМО, у вас есть два варианта:

  1. Перейти к sleep за 60 секунд

    В принципе, запустить хрон в требуемом час каждый день, и проверить ваше состояние, если это не True, а затем идите спать 60 секунд.

    if($row["fake_time"] == date("Y-m-d H i")){ 
        //do stuff 
    } else { 
        sleep(60); 
    } 
    

    Таким образом, у вас есть одно задание cron, хотя оно работает долгое время. В случае, если вы можете запускать работу cron только ежедневно, и вы хотите запускать в произвольный час, а также минуту, вы можете изменить свою логику и переспать за 3600 секунд для почасовых снов, а затем пойти на минимальные спячки 60 секунд.

    Возможно, вам потребуется установить set_time_limit соответственно.

  2. Настройка easycron

    В случае, если ваши хрон рабочих мест прекращаются внезапно, поскольку срок не может быть установлен, вам нужно будет попасть с помощью easycron службы.

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

    wget your.domain.com/script.php 
    
0

Если нет технических проблем, вы можете сделать это с помощью своего php-скрипта (не требуется установка).

if(rand(1, 5) == 1){ 
// do your staff 
} 

Если вы считаете, что сценарий не будет выполняться достаточно часто, вы можете уменьшить разницу rand(1,3)

Смежные вопросы