讨论数量:
任务调度文档 任务调度《Laravel 8 中文文档》
任务调度即定时任务,如文档简介所言,每次查/增/改定时任务都需要 ssh
登录服务器操作 crontab
,这很痛苦,而laravel
的任务调度是代码控制的。只需要在 crotab
中crontab -u www -e
添加 * * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
一条定时任务即可,这条定时任务的意思是每分钟检查你所定义的任务调度有没有需要执行的。
我项目中用的更多的是 「Artisan 命令调度」
第一步php artisan make:command TestCode
会在 App\Console\Commands
自动生成 TestCode.php
文件。
第二布,编辑 TestCode.php
,
class TestCode extends Command
{
protected $signature = 'code:test';
protected $description = '测试';
public function __construct(){..折叠}
public function handle(){
dd(123); //你的代码
}
}
第三步:手动测试一下排除bug
php artisan code:test
//123
第四步:在 App\Console\Kernel.php
中添加
class Kernel extends ConsoleKernel
{
protected function schedule(Schedule $schedule)
{
// everyMinute everyTenMinutes everyTenMinutes everyThirtyMinutes hourly dailyAt('13:00') between('8:40', '23:00') cron('1 */12 * * *')
$schedule->command('code:test')->everyMinute();
}
}
以上就定义了一个每分钟去打印 123
的任务调度。
场景举例如下:
- 每小时/每天统计一次网站数据。
- 每天清理一些过期没用的表数据。
- 定时同步某一个地方的数据保持一致。
- 每10分钟将发布时间大于15天的帖子自动关闭。
- 每分钟对用户新支付的订单去查询核实已支付状态。
- 当数据输入较快,而我们又需要对数据二次复杂的处理,通常先放进临时表,然后定时从临时表中取出批量处理。
- 当希望用户的帖子发布后,在5分钟之后才公开。
推荐文章: