[学习教程] 使用laravel的任务调度(定时执行任务)

[复制链接]
hyt_xcx手机认证 实名认证 视频认证 发表于 2017-5-9 22:44:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
本帖最后由 hyt_xcx 于 2017-5-9 22:48 编辑
laravel中有一个很强大上的功能,只需要在服务器上添加一个cron条目,就可以定时执行所有的laravel任务。

现在有如下数据表:

no_pic.png

我想让cron表中的cron字段的值每分钟增加1,那么我需要如下步骤:
1、在App\Console\Kernel.php中编写laravel代码
  1. protected function schedule(Schedule $schedule)
  2. {
  3.     $schedule->call(function () {
  4.                     DB::table('cron')->increment('cron');
  5.                 })->everyMinute();
  6. }
复制代码
2、在服务的/var/spool/cron/root文件中添加代码
注意:这里最好使用vim编辑器编辑文件,如果使用winscp编辑文件,会出现不执行任务的问题。
在命令行输入
  1. crontab -e
复制代码
添加如下代码
  1. * * * * * /usr/local/php/bin/php /data/wwwroot/test/artisan schedule:run 1>> /dev/null 2>&1
复制代码
在命令行输入
  1. crontab -u root -l
复制代码
no_pic.png

不需要重启cron服务,因为系统每分钟都会读一遍/var/spool/cron目录下的文件。

如果发现按照如下配置还是不能执行的话,可以用以下方法排除问题:

看一下命令有没有使用绝对路径,比如这里使用/usr/local/php/bin/php而不是php,使用/data/wwwroot/test/artisan而不是artisan。

如果已经使用了绝对路径还是不执行,那就直接在命令行输入/usr/local/php/bin/php /data/wwwroot/test/artisan schedule:run 1>> /dev/null 2>&1,看看有没有执行,如果没有执行,那就是laravel代码的问题,如果执行了说明是环境变量的问题,好好检查路径的问题。如果不知道php在什么地方,在命令行输入which php,就会提示你php安装在什么位置了。


文章来源于:博客园

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

专注源码分享,教程分享
全国服务电话

187-8198-7163

周一至周8:00-22:00

反馈建议

cdhaoyt@163.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.2© 2001-2013 Comsenz Inc.( 蜀ICP备16032957号-1