在本系列文章中,我们将深入探讨我们经常使用的 Laravel 的部分,揭示我们可以用于下一个项目的功能,前提是我们知道它们!本系列的第一篇文章是关于 Laravel 调度器,它有助于运行定时任务(即 cron 作业)。
让我们探索一些不太为人所知的功能
1. skip() & when()
如果您希望您的定时任务仅在某个条件为 true
时执行,请使用 when()
设置这样的条件
$schedule->command('your:command')->when(function () {
return some_condition();
});
skip()
方法与 when()
方法相反。如果跳过方法返回 true
,则定时任务将不会执行
$schedule->command('emails:send')->daily()->skip(function(){
return Calendar::isHolidauy();
});
2. withoutOverlapping()
您可能正在运行一个只应该同时有一个实例运行的临界作业。这就是 withoutOverlapping()
确保定时任务不会重叠、防止潜在冲突的地方。
$schedule->command('your:command')->withoutOverlapping();
3. thenPing()
在执行任务后,您可能希望ping一个URL来通知另一个服务或触发另一个操作。 thenPing()
就能让您无缝完成这项操作。
$schedule->command('your:command')->thenPing('http://example.com/webhook');
4. runInBackground()
如果您希望您的定时任务在后台运行,而不会阻止其他进程。 runInBackground()
将帮助您做到这一点
$schedule->command('your:command')->runInBackground();
5. evenInMaintenanceMode()
您可以根据名称猜到它的作用。您可以在应用程序处于维护模式时执行定时任务。
$schedule->command('your:command')->evenInMaintenanceMode();
这就结束了,朋友们!试着用它们;在任务自动化的任务中使用这些调度器函数,让您的代码更加简单。上述所有内容都已经在我们的 Twitter 上逐一分享。 关注我们在 Twitter 上的账号;你会喜欢它的。
继续探索,继续编码,不断拓展Laravel能达成的边界。下次再见,祝您安排愉快!🚀
driesvints, marcelzutphen, fosterushka, saltyfishh9, issacnguyentx2022 赞同了这篇文章