📅  最后修改于: 2023-12-03 14:48:15.166000             🧑  作者: Mango
如果你是一位PHP开发者,你一定用过Laravel框架。Laravel框架有一个非常有用的工具,叫做artisan。artisan是Laravel框架的命令行工具,它可以让您轻松地创建控制器、模型、Migration、Seeder、测试等等。除此之外,artisan还提供了一种用于任务调度的简单方法。这个方法被称为"schedule"。
使用"schedule"功能,您可以指定任务在指定的时间间隔内执行。这些任务可以是Laravel应用程序的命令、闭包或其他可调用的类。
Laravel的"schedule"功能背后使用了操作系统的cron。在大多数情况下,您只需要在服务器上配置一次cron,而后所有的调度任务都会自动进行。
接下来,我们就准备好使用Laravel的artisan schedule运行我们的任务:
首先,我们需要安装Laravel框架。您可以通过使用Composer Package管理器来安装它。在终端中运行以下命令:
composer create-project --prefer-dist laravel/laravel myapp
这将在当前目录中创建一个名为"myapp"的新Laravel项目。
在Laravel 5.5及以后的版本中,您可以通过运行以下命令来创建一个调度任务:
php artisan make:command TaskName --command="task:name"
在Laravel 5.4及以前的版本中,您可以使用以下命令:
php artisan make:console TaskName
这将在app/Console/Commands目录中创建一个新的PHP文件。打开这个文件,您会看到一个已经生成的任务。
我们要更改任务的行为,以便用户使用schedule命令执行它。我们将使用Illuminate\Console\Scheduling\Schedule类来处理我们的任务。
在app/Console/Kernel.php文件中添加以下代码:
protected function schedule(Schedule $schedule)
{
$schedule->command('task:name')->everyMinute();
}
这将使"task:name"命令每分钟运行一次。您可以使用其他可用的调度项。例如:everyFiveMinutes、everyTenMinutes、everyThirtyMinutes、hourly、daily等等。
注意,如果您想在单独的文件中将这些规划调度任务,则需要在app/Console/Kernel.php文件的"schedule"方法中包含此文件。
现在,我们已经准备好设置计划任务并在cron中运行它们了。
在服务器上打开cron配置文件,然后添加以下命令:
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
这将在每分钟的时候运行schedule任务,并重定向所有输出到/dev/null。
现在,您已经准备好测试Laravel中的任务调度。您可以使用以下命令:
php artisan task:name
这将运行TaskName任务的主逻辑。您可以在此处做任何您想要的事情。例如:发送电子邮件、收集数据、生成报告等。
Laravel的artisan schedule很容易使用,并且为您的应用程序提供安全可靠的任务调度。如果您的应用程序需要定期执行任何操作,则可以使用此来轻松处理。