laravel 随机调度命令

标签 laravel random laravel-scheduler

我有一个奇怪的问题。
我使用自定义命令通过 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/

相关文章:

Laravel 调度程序 : Should I use jobs or commands?

php - Laravel 运行多个定时任务

当我尝试上传 ai 或 psd 文件时,Laravel 图像验证不起作用

php - Blade Laravel 中的 undefined variable

.net - 为什么 Random.Next 中的 minValue == maxValue 可以?

php - 即时生成唯一 ID Mysql + PHP

php - Laravel Eloquent 联合查询

php - Azure Web 应用程序 Mcrypt 安装

c++ - 如何存储需要随机挑选和删除的数据, vector ,哈希表或其他?

AWS 上的 Laravel 调度任务不起作用