📜  * * * * * cd path-to-your-project && php artisan schedule:run >> dev null 2>&1 - PHP (1)

📅  最后修改于: 2023-12-03 14:38:45.579000             🧑  作者: Mango

* * * * * cd path-to-your-project && php artisan schedule:run >> dev null 2>&1 - PHP

介绍

本文将介绍一个 PHP 的命令行工具,php artisan schedule:run,以及如何使用 Cron 表达式来运行这个工具。Cron 是 Unix 和类 Unix 系统上的时间任务调度程序,可以让用户在指定时间自动执行命令或脚本。这个命令行工具可以帮助你在计划时间上运行 Laravel 中定义的计划任务。

在本文中,我们将详细讨论以下主题:

  • Cron 表达式的基础知识
  • 如何设置 Cron 表达式
  • 如何使用 Laravel 的计划任务
  • 如何使用 php artisan schedule:run 命令运行计划任务
Cron 表达式

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 表达式可能需要一些时间和实践。建议使用在线 Cron 表达式生成器和验证器,以简化这个过程。

使用 Laravel 的计划任务

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 表达式的创建和验证。