📜  共享主机上的 laravel 调度程序 - PHP (1)

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

在共享主机上使用 Laravel 调度程序

Laravel 是一个流行的 PHP 开发框架,它提供了许多工具和功能,可以让你更轻松地构建 Web 应用程序。其中之一就是 Laravel 调度程序(Laravel Scheduler),它是一个用于在指定时间执行任务的功能。在共享主机上运行 Laravel 调度程序可能有些棘手,但下面将介绍一些可能有用的提示和技巧。

确定你的主机支持 Laravel 调度程序

在开始使用 Laravel 调度程序之前,你需要确保你的主机支持 Cron 作业。Cron 是一种运行定期任务的基本工具,可以在后台自动运行脚本或命令。有些 Web 主机可能不支持 Cron 作业,或者可能需要进行其他设置才能允许 Cron 作业。因此,请务必与你的 Web 主机提供商联系,以确保 Cron 作业在你的主机上可用。

编写你的任务

使用 Laravel 调度程序时,你需要编写你要定期运行的任务。通常情况下,你会在 app/Console/Kernel.php 文件中定义任务。例如,下面是一个简单的任务,它将更新指定的数据库表:

protected function schedule(Schedule $schedule)
{
    $schedule->call(function () {
        DB::table('mytable')->update(['column' => 'value']);
    })->daily();
}

在此示例中,我们定义了一个每天运行一次的任务,该任务运行一个闭包,该闭包更新名为 mytable 的数据表中的列 column 的值。

请注意,你需要在类顶部包含以下命名空间:

use Illuminate\Console\Scheduling\Schedule;

在你的调度程序中,你可以定义多个任务,并使用多个调度器方法,如 dailyweeklyeveryMinute 等。

配置共享主机上的 Cron 作业

在你的本地开发环境中,可以使用 php artisan schedule:run 命令来运行 Laravel 调度程序。但是,在共享主机上使用 Cron 作业来运行调度程序会更方便和可靠。但是,配置 Cron 作业可能需要一些特殊的设置。以下是一些你需要考虑的事项:

  • Cron 作业需要指定正确的 PHP 可执行文件路径。在共享 Web 主机上,PHP 可执行文件的路径通常是 /usr/bin/php
  • Cron 作业需要指定正确的 Laravel Artisan 文件路径。通常情况下,Laravel Artisan 文件的路径是 <path_to_your_app>/artisan
  • 你应该设置 Cron 作业以在你的时间区域内运行。例如,如果你的应用程序运行在纽约,你应该使用以下格式:0 1 * * * <php_path> <artisan_path> schedule:run >> /dev/null 2>&1

因此,如果你的 Laravel 应用程序位于 /home/myusername/public_html,PHP 可执行文件的路径位于 /usr/bin/php,并且你希望每天凌晨1点运行 Laravel 调度程序,则你应该使用以下 Cron 作业:

0 1 * * * /usr/bin/php /home/myusername/public_html/artisan schedule:run >> /dev/null 2>&1
检查日志文件

最后一步是确保你的 Laravel 调度程序正在按预期工作。你可以查看日志文件(默认情况下位于 storage/logs 目录中),以查看任务是否已成功运行。你还可以配置邮件通知,以在任务失败时通知你。有关详细信息,请参见 Laravel 文档

总结

在共享主机上运行 Laravel 调度程序可能需要一些额外的步骤和设置。但是,一旦你知道如何配置 Cron 作业并了解调度程序的工作原理,你就可以更轻松地定期运行你的任务,并使你的应用程序更加可靠。