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

silmarion

Полезный
Регистрация
21 Июн 2012
Сообщения
194
Реакции
19
Доброго дня, подскажите, можно ли сделать, чтобы скрипт запускался рандомно в определенном промежутке времени?
 
Нашел похожее, Для просмотра ссылки Войди или Зарегистрируйся
Но тут как я понял запуск скрипта раз в день в произвольное время, а мне надо чтобы скрипт запускался постоянно, но в промежутке к примеру от 20 минут до 1:20
 
средствами крона нельзя, разве что десяток правил писать для определенного времени.
 
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 * * * * команда запуска


Ну тут вроде как раз в сутки отрабатывает....
 
Можно так по идее если надо раз в сутки рандомно....
1 6 * * * root sleep $[ ( $RANDOM % 3600*24 ) + 1 ]s && /path/to/script

если надо чаще - 3600*24 - меняем на нужный отрезок (это сутки в секундах)
в кроне делаем раз в /n часов и т.п.
 
Если у тебя скрипт работает не ограниченное время или мин 10 если достаточно. То в самом скрипте, рандомно задерживай выполнение команды. sleep();
PHP:
<?php

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

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

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

?>
 
Назад
Сверху