Laravel 5.2 可以使用Laravel每隔X秒运行一次任务吗?

Laravel 5.2 可以使用Laravel每隔X秒运行一次任务吗?,laravel-5.2,Laravel 5.2,嘿,伙计们,我读过《拉威尔文档的日程安排》一章,但是 我没有找到太多的信息。我试图自定义任务的执行,使其每30秒运行一次。有解决办法吗? 对不起,我的英语不好,祝你愉快。我在 在过去,开发人员已经为他们需要调度的每个任务生成了一个Cron条目。然而,这是一个令人头痛的问题。您的任务计划不再在源代码管理中,必须通过SSH将Cron条目添加到服务器中。Laravel命令调度程序允许您在Laravel本身中流畅而明确地定义命令调度,并且服务器上只需要一个Cron条目 您仍然需要使用Cron来运行任务,

嘿,伙计们,我读过《拉威尔文档的日程安排》一章,但是 我没有找到太多的信息。我试图自定义任务的执行,使其每30秒运行一次。有解决办法吗?
对不起,我的英语不好,祝你愉快。

我在

在过去,开发人员已经为他们需要调度的每个任务生成了一个Cron条目。然而,这是一个令人头痛的问题。您的任务计划不再在源代码管理中,必须通过SSH将Cron条目添加到服务器中。Laravel命令调度程序允许您在Laravel本身中流畅而明确地定义命令调度,并且服务器上只需要一个Cron条目

您仍然需要使用Cron来运行任务,但是使用Laravel的调度,您只能在Cron上设置一个作业,并通过任务调度控制应用程序的所有作业

示例:

在服务器上设置此cron:

* * * * * php /path/to/artisan schedule:run
它将每分钟调用Laravel命令调度程序,然后,Laravel评估您的计划任务并运行到期的任务

然后在文件app/Console/Kernel.php中,您可以按照以下代码配置所有任务:

$schedule->call(function () {
        DB::table('recent_users')->delete();
    })->daily();

$schedule->command('inspire')->hourly();

默认情况下,CRON任务的调度时间最短为1分钟,但您的问题有解决方法

在控制台内核中,您应该执行以下操作:

/**
*定义应用程序的命令计划。
*
*@param\light\Console\Scheduling\Schedule$Schedule
*@返回无效
*/
受保护功能计划(计划$schedule)
{
$schedule->command('your_command:run',['--delay'=>0])->everyMinute();
$schedule->command('your_command:run',['--delay'=>30])->everyMinute();
}
在命令类中,应该定义可以接受延迟参数的
$signature
变量

/**
*console命令的名称和签名。
*
*@var字符串
*/
受保护的$signature='您的_命令:运行{--delay=:延迟命令的秒数}';
在handle方法中,您应该读取此参数的值,并使用内置的
sleep()
函数将此任务休眠特定的秒数

/**
*执行控制台命令。
*
*@返回混合
*/
公共函数句柄()
{
//代码
睡眠(intval($this->option('delay'));
}

此解决方案将每30秒运行一次任务,您可以将不同延迟的任务数相乘。在这种情况下,您需要在内核类中编辑调度方法。

此解决方案允许您每分钟运行一次任务,而不是每X秒运行一次。这是因为cron的执行间隔是每分钟一次,所以不能有比这更低的间隔!