我有一个奇怪的问题。
我使用自定义命令通过 FB api 共享一些 url。
现在这个命令被安排到一个固定的 cron 配置,但我希望这是随机的,也许在时间范围之间。
我尝试在命令中使用随机 sleep 功能,但出现了奇怪的行为。
有没有人已经不得不面对这个问题?
最佳答案
您可以在开始时生成随机时间。
protected function schedule(Schedule $schedule)
{
$expression = \Cache::get('schedule:expressions:inspire');
if (!$expression) {
$randomMinute = random_int(0, 59);
// hour between 8:00 and 19:00
$hourRange = range(8, 19);
shuffle($hourRange);
// execute twice a day
$randomHours = array_slice($hourRange, 0, 2);
$expression = $randomMinute . ' ' . implode($randomHours, ',') . ' * * * *';
\Cache::put('schedule:expressions:inspire', $expression, Carbon::now()->endOfDay());
}
$schedule->command('inspire')->cron($expression);
}
关于laravel 随机调度命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35200012/