cPanel主机配合Laravel实现定时任务

cPanel主机配合Laravel的Schedule实现定时任务

image description

cPanel主机配合Laravel实现定时任务

首先先进行代码实现

  • 先找到laravel的任务调度目录,在app/Console/Kernel.php文件中,修改 schedule 方法,在此方法中填写对应需要定时执行的代码,例如:

    protected function schedule(Schedule $schedule)
    {
        //此处为使用闭包的方式创建任务,至于其他方式可以查看官方文档
        $schedule->call(function()
        {
            //每分钟更新visitors表的today_clicks字段为0
            DB::table('visitors')->update(['today_clicks'=>0]);
        })->everyMinute();
    }

说明:任务执行时间的频率方法,如daily()hourly()weekly()everyFiveMinutes()等等,具体的方法可以查看源码vendor\laravel\framework\src\Illuminate\Console\Scheduling\Event.php,可以查看所有的方法。

任务代码完成,下面就需要执行定时任务了

上面的任务定义完成后,通过命令php artisan schedule:run即可执行对应的任务,但是我们总不可能一直手动去执行这个命令,所以需要linux的系统功能的帮助,自动去完成这个动作。

因为对cPanel主机的不熟悉,找不到对应的用户可以自定义配置文件,大多数编辑命令都是报没有权限修改这个错误,因此最后只能通过通过其控制面板进行修改。

还好,cPanel管理面板可以找到Cron作业管理控制。

  • 首先打开cPanel管理首页,找到如下地方:

description

点进去后,就可以直观的进行任务设置,根据需要,选择对应的作业执行时间频率,再填写对应的代码命令,点击 添加新Cron任务 即可。

description

需要注意的是,在写命令时,需要填写完整的php及laravel项目(到项目的根目录)的绝对路径/usr/local/bin/php /home/your/laravel/path/artisan schedule:run >> /dev/null 2>&1;如果不清楚php的位置,在系统的dos界面执行 which php 命令即可,会自动输出系统的php路径。

END