Laravel 的任务调度计划任务的测试
Laravel 的任务调度——计划任务
版本:Laravel 5.2
Laravel这个任务调度功能最大了优势就在于增加任务时不需要SSH到服务器增加Cron条目。但前期准备工作还是必须要加入一条Cron的。
1、服务器相关配置:
准备工作:
启动调度器
ssh 到服务器或者直接在本地环境 终端中输入命令:
# crontab -e
解释下这个命令:实际作用就是在服务器的/var/spool/cron/root文件中添加代码
添加以下命令:
官方例子:
# * * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1
命令示意:
# * * * * * phppath 项目路径/artisan schedule:run >> /dev/null 2>&1,这里php和项目目录建议使用绝对路径。
php路径:/usr/local/php/bin/php,也可输入命令whereis查看:
配置完之后查看任务列表是否添加成功:
# crontab -u root -l
2、代码编写:
在 AppConsoleCommands目录下, 在创建计划任务TestCommand.php,任务内容就是打印log日志:
可以将所有的计划任务定义在 AppConsoleKernel ,定义调度任务 将任务加入项目任务列表:
任务执行的结果:
到此算是顺利测试成功了。
那如果没执行呢,就只有两个原因了:1、Laravel代码问题; 2、web服务器 Crond服务未启动。
1、在终端直接执行命令——就是上面配的那个命令,示例如下:
/usr/local/php/bin/php /var/www/html/test/artisan schedule:run 1>> /dev/null 2>&1
看有没有执行结果,没有的话那就是代码有BUG了 =。=,自己解决吧。
2、还不能执行:那就在终端运行命令:
# pgrep crond,
看看是否打印出PID,如果没有就意味着crond服务没启动。
此时运行命令:
#crond restart
重启crond,可能这个原因占多数。
尝试了一下:
果然如此,1中crond 服务未启动,2中代表已启动,PID = 78。
具体调度频率设置
当然,你可以针对你的任务来分配多种调度计划:
方法 描述
->cron('* * * * * *'); 自定义调度任务
->everyMinute(); 每分钟执行一次任务
->everyFiveMinutes(); 每五分钟执行一次任务
->everyTenMinutes(); 每十分钟执行一次任务
->everyThirtyMinutes(); 每半小时执行一次任务
->hourly(); 每小时执行一次任务
->hourlyAt(17); 每一个小时的第 17 分钟运行一次
->daily(); 每到午夜执行一次任务
->dailyAt('13:00'); 每天的 13:00 执行一次任务
->twiceDaily(1, 13); 每天的 1:00 和 13:00 分别执行一次任务
->weekly(); 每周执行一次任务
->monthly(); 每月执行一次任务
->monthlyOn(4, '15:00'); 在每个月的第四天的 15:00 执行一次任务
->quarterly(); 每季度执行一次任务
->yearly(); 每年执行一次任务
->timezone('America/New_York');设置时区
本文链接二维码可以保存在本地:保存
http://shixiangcun.cc/index.php?c=index&id=86&m=articleDetailInfo
分类 Laravel | 浏览 (7771) | 赞 (0) | 踩 (0) | | 2017-11-01 15:46:45 |
相关文章
- Mac安装Swoole扩展phpize 时 Cannot find autoconf 解决方法
- mac下安装swoole扩展报错PHP Startup Unable to load dynamic library
- Laravel 数据库事务
- PHP贷款等额本息、等额本金计算月供还款计划公式
- Laravel 关闭过滤排除部分路由VerifyCsrfToken 验证
- Laravel Horizon监控Redis队列queue