📜  usr local bin php home tbmholdingltd public_html tugent php artisan schedule:run >> dev null 2>&1 - PHP (1)

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

主题:如何使用PHP的artisan schedule来定时运行任务

如果你是一位PHP开发者,你一定用过Laravel框架。Laravel框架有一个非常有用的工具,叫做artisan。artisan是Laravel框架的命令行工具,它可以让您轻松地创建控制器、模型、Migration、Seeder、测试等等。除此之外,artisan还提供了一种用于任务调度的简单方法。这个方法被称为"schedule"。

使用"schedule"功能,您可以指定任务在指定的时间间隔内执行。这些任务可以是Laravel应用程序的命令、闭包或其他可调用的类。

Laravel的"schedule"功能背后使用了操作系统的cron。在大多数情况下,您只需要在服务器上配置一次cron,而后所有的调度任务都会自动进行。

接下来,我们就准备好使用Laravel的artisan schedule运行我们的任务:

安装Laravel

首先,我们需要安装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很容易使用,并且为您的应用程序提供安全可靠的任务调度。如果您的应用程序需要定期执行任何操作,则可以使用此来轻松处理。