📅  最后修改于: 2023-12-03 14:38:45.579000             🧑  作者: Mango
本文将介绍一个 PHP 的命令行工具,php artisan schedule:run
,以及如何使用 Cron 表达式来运行这个工具。Cron 是 Unix 和类 Unix 系统上的时间任务调度程序,可以让用户在指定时间自动执行命令或脚本。这个命令行工具可以帮助你在计划时间上运行 Laravel 中定义的计划任务。
在本文中,我们将详细讨论以下主题:
php artisan schedule:run
命令运行计划任务Cron 表达式是 Unix 和类 Unix 系统上的时间表达式,用于指定何时运行命令或脚本。它由五个或六个字段组成,表示分、时、日、月、周几和可选的年。
Cron 表达式示例:
* * * * * command-to-be-executed
- - - - -
| | | | |
| | | | ----- Day of the week (0 - 7) (Sunday is both 0 and 7)
| | | ------- Month (1 - 12)
| | --------- Day of the month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
以上是一个基本 Cron 表达式的示例,表示每分钟都会执行 command-to-be-executed
这个命令或脚本。这个 Cron 表达式的五个字段分别表示分钟、小时、日期、月份和星期几。
要设置 Cron 表达式,你需要理解每个字段的含义。每个字段都可以通过通配符 *
或数字来指定,也可以使用 -
或 ,
来指定范围或列表。
创建正确的 Cron 表达式可能需要一些时间和实践。建议使用在线 Cron 表达式生成器和验证器,以简化这个过程。
Laravel 提供了一个 Illuminate\Console\Scheduling\Schedule
类,可以在应用程序中定义和管理计划任务。要使用这个类,你需要在 App\Console\Kernel
类的 schedule
方法中调用该类的方法,以定义要运行的任务和任务的时间表。
以下是一个简单的示例,定义在每小时的第一分钟运行一个任务:
use Illuminate\Console\Scheduling\Schedule;
protected function schedule(Schedule $schedule)
{
$schedule->job(new MyJob)->hourlyAt(1);
}
现在,已经定义了计划任务,并且为它们指定了时间表。下一步是设置一个 Cron 表达式来自动运行这些任务。为了自动运行 Laravel 计划任务,只需添加一个 Cron 表达式到你的服务器上,将它与 php artisan schedule:run
命令关联起来即可。
下面是一个示例 Cron 表达式:
* * * * * cd /path/to/your/project && php artisan schedule:run >> /dev/null 2>&1
这个 Cron 表达式将在每分钟运行一次 php artisan schedule:run
命令,并将输出重定向到 /dev/null
,这将禁止该命令生成任何输出。如果希望在出现错误时将这些错误记录到日志文件中,请使用 2>&1
将错误日志合并到标准输出流中。
通过以上介绍,你已经学会了如何使用 Cron 表达式来运行 Laravel 计划任务。现在你可以创建自己的任务并为它们指定时间表,然后将 Cron 表达式添加到你的服务器上,自动运行这些任务。此外,你还可以使用在线 Cron 表达式生成器和验证器来简化 Cron 表达式的创建和验证。