Рандомное значение от... до ... в crontab

Тема в разделе "Администрирование серверов", создана пользователем silmarion, 6 окт 2015.

Модераторы: mefish, stooper
  1. silmarion

    silmarion

    Регистр.:
    21 июн 2012
    Сообщения:
    195
    Симпатии:
    19
    Доброго дня, подскажите, можно ли сделать, чтобы скрипт запускался рандомно в определенном промежутке времени?
     
  2. silmarion

    silmarion

    Регистр.:
    21 июн 2012
    Сообщения:
    195
    Симпатии:
    19
    Нашел похожее, https://www.nulled.cc/threads/51805/page-2
    Но тут как я понял запуск скрипта раз в день в произвольное время, а мне надо чтобы скрипт запускался постоянно, но в промежутке к примеру от 20 минут до 1:20
     
  3. mefish

    mefish Support

    Moderator
    • Супермодератор
    Регистр.:
    30 авг 2007
    Сообщения:
    915
    Симпатии:
    643
    средствами крона нельзя, разве что десяток правил писать для определенного времени.
     
  4. silmarion

    silmarion

    Регистр.:
    21 июн 2012
    Сообщения:
    195
    Симпатии:
    19
    cron.php

    <?php

    include('cron_data.php');

    if( ($date == date('jm')) && $done )
    exit('сегодня уже выполнено');

    $ch = date('G');
    $cm = (int)date('i');

    if( ($ch >= $mh) && ($cm >= $mm) )
    {
    $data = "<?php\n";
    $data .= '$date = ' . date('jm') . ";\n";
    $data .= '$done = true;' . "\n";
    $data .= '$mh = ' . rand(0, 23) . ";\n";
    $data .= '$mm = ' . rand(0, 59) . ";\n";
    $data .= '?>';

    $file = fopen("cron_data.php", "w");
    fwrite($file, $data);
    fclose($file);

    // делаем что нам надо
    }

    ?>

    и cron_data.php
    Код:
    <?php
    $date = '';
    $done = false;
    $mh = 0;
    $mm = 0;
    ?>
    2.
    настраиваешь CRON на запуск cron.php скажем каждые 5 минут:
    Код:
    */5 * * * * команда запуска


    Ну тут вроде как раз в сутки отрабатывает....
     
  5. micol

    micol Создатель

    Регистр.:
    2 дек 2013
    Сообщения:
    28
    Симпатии:
    4
    Можно так по идее если надо раз в сутки рандомно....
    1 6 * * * root sleep $[ ( $RANDOM % 3600*24 ) + 1 ]s && /path/to/script

    если надо чаще - 3600*24 - меняем на нужный отрезок (это сутки в секундах)
    в кроне делаем раз в /n часов и т.п.
     
  6. javx

    javx

    Регистр.:
    28 авг 2015
    Сообщения:
    520
    Симпатии:
    239
    Если у тебя скрипт работает не ограниченное время или мин 10 если достаточно. То в самом скрипте, рандомно задерживай выполнение команды. sleep();
    PHP:
    <?php

    // текущее время
    echo date('h:i:s') . "\n";

    // ожидание в течении 10 секунд
    sleep(10);

    // завершение ожидания
    echo date('h:i:s') . "\n";

    ?>