Laravel框架——任务调度(cron)
准备:
在服务的/var/spool/cron/root文件中添加代码
cd /var/spool/cron/root
添加以下代码
* * * * * phppath 项目路径/artisan schedule:run >> /dev/null 2>&1
打印出定时任务列表查看是否添加成功
crontab -u root -l
如果已经使用了绝对路径还是不执行,那就直接在命令行输入/usr/local/php/bin/php /data/wwwroot/test/artisan schedule:run 1>> /dev/null 2>&1,看看有没有执行,如果没有执行,那就是laravel代码的问题
如果不知道php在什么地方,在命令行输入which php,就会提示你php安装在什么位置了。
1.创建Class
php artisan make:console Classname
2.修改Classname.php文件
protected $signature = 'classname';
事件操作写在handle()方法中
3.修改Kernel.php
添加$commands数组:
Commands\Classname::class,
在schedule方法中调用以及设置条件:
$schedule->command('classname')
->hourly();
everyMinute(); 每分钟运行一次任务
everyFiveMinutes(); 每五分钟运行一次任务
everyTenMinutes(); 每十分钟运行一次任务
everyThirtyMinutes(); 每三十分钟运行一次任务
hourly(); 每小时运行一次任务
daily(); 每天凌晨零点运行任务
dailyAt('13:00'); 每天13:00运行任务
twiceDaily(1, 13); 每天1:00 & 13:00运行任务
weekly(); 每周运行一次任务
monthly(); 每月运行一次任务
quarterly(); 每个季度运行一次
yearly(); 每年运行一次
如果需要某天的那个时间:
->at('13:00') //13点才会执行
上面这些方法可以和额外的约束一起联合起来创建一周特定时间运行的更加细粒度的调度,例如:
weekdays(); 只在工作日运行任务
sundays(); 每个星期天运行任务
mondays() 每个星期一运行任务
tuesdays(); 每个星期二运行任务
wednesdays(); 每个星期三运行任务
thursdays(); 每个星期四运行任务
fridays(); 每个星期五运行任务
saturdays(); 每个星期六运行任务
when(Closure); 基于特定测试运行任务
when方法用于限制任务在通过给定测试之后运行。换句话说,如果给定闭包返回true,只要没有其它约束条件阻止任务运行,该任务就会执行:
$schedule->command('inspire')
->hourly()
->when(function () {
return true;
});
reject方法和when相反,如果reject方法返回true,调度任务将不会执行。
避免任务重叠
默认情况下,即使前一个任务仍然在运行调度任务也会运行,要避免这样的情况,可使用withoutOverlapping方法:
$schedule->command('inspire')
->hourly()
->withoutOverlapping();
Laravel调度器为处理调度任务输出提供了多个方便的方法。首先,使用sendOutputTo方法,你可以发送输出到文件以便稍后检查:
$schedule->command('emails:send')
->daily()
->sendOutputTo($filePath);
任务钩子:
使用before和after方法,你可以指定在调度任务完成之前和之后要执行的代码:
$schedule->command('emails:send')
->daily()
->before(function () {
// Task is about to start...
})
->after(function () {
// Task is complete...
});
错误检查:
如果按照上面写了,还是没有定时执行:运行pgrep crond,看看是否打印出PID,如果没有就意味着没有运行
运行crond restart重启cron
Laravel框架——任务调度(cron)的更多相关文章
- cron以及在laravel中使用cron
yum install vixie-cron yum install crontabs /bin/systemctl restart crond.service #启动服务 /bin/systemct ...
- Laravel框架定时任务2种实现方式示例
本文实例讲述了Laravel框架定时任务2种实现方式.分享给大家供大家参考,具体如下: 第一种 1.生成一个commands文件 > php artisan make:command test ...
- [php]laravel框架容器管理的一些要点
本文面向php语言的laravel框架的用户,介绍一些laravel框架里面容器管理方面的使用要点.文章很长,但是内容应该很有用,希望有需要的朋友能看到.php经验有限,不到位的地方,欢迎帮忙指正. ...
- php的laravel框架快速集成微信登录
最终的解决方案是:https://github.com/liuyunzhuge/php_weixin_provider,详细的介绍请往下阅读. 本文面向的是php语言laravel框架的用户,介绍的是 ...
- laravel 框架使用总结 limit
后台开发就是数据的各种处理很多时候需要做到分页,但是在laravel中使用limit做分页的时候会出现问题,偏移量和每页的条数放进去好像不好使了 下面推荐给大家一种在laravel框架中非常好用的写法 ...
- laravel框架总结(十) -- 返回值
以前用CI框架对于返回值没有过多关注,但是发现使用laravel框架的时候出现了一些小问题,特意实践总结了一些常用情形,希望对大家有所帮助 先理解几个概念: 1>StdClass 对象=&g ...
- Laravel框架数据库CURD操作、连贯操作使用方法
Laravel框架数据库CURD操作.连贯如何来操作了这个操作性是非常的方便简单了我们在这里来为各位介绍一篇相关的教程,具体的细节步骤如下文介绍. Laravel是一套简洁.优雅的PHP Web开 ...
- [麦先生]Laravel框架实现发送短信验证
今天在做到用户注册和个人中心的安全管理时,我借助实现第三方短信平台在Laravel框架中进行手机验证的设置; 由于我们做的是一个为客户提供医疗咨询和保健品网站,所以对客户个人隐私的保护显得尤为重要, ...
- [麦先生]初学Laravel框架与ThinkPHP框架的不同(2)
在经过了一段时间的开发后,我对Laravel框架的认识又在逐步的加深,对于这个世界占有量NO.1的框架... 我想说,我已经在逐步的感受到他的恐怖之处... 一.建表--Laravel在数据库建表上 ...
随机推荐
- SSKeyChains的使用小节
我是前言: 最近在项目中需要使用钥匙串来进行账户密码的保存,小结一下.贴上框架地址:https://github.com/soffes/SAMKeychain. 它提供了5个类方法使用: + (NSA ...
- Jsp学习(1)
Servlet的用作:用java语言开发动态资源的技术: Jsp的作用:用java语言(+html)开发动态的资源,其实jsp就是servlet演化而来的. Jsp的执行过程: 我们先来做一个实验,首 ...
- 20169210《Linux内核原理与分析》课程总结
每周作业链接汇总 第一周作业:对实验楼<Linux 基础入门(新版)>课程的学习,其中有用户及文件权限管理.Linux 目录结构及文件基本操作.环境变量与文件查找.文件打包与解压缩等共17 ...
- POJ 3734
题目的大意: 给定待粉刷的n个墙砖(排成一行),每一个墙砖能够粉刷的颜色种类为:红.蓝.绿.黄, 问粉刷完成后,红色墙砖和蓝色墙砖都是偶数的粉刷方式有多少种(结果对10007取余). 解题思路: 思路 ...
- Android_设备隐私获取,忽略6.0权限管理
1.前言 (1).由于MIUI等部分国产定制系统也有权限管理,没有相关api,故无法判断用户是否允许获取联系人等隐私.在Android 6.0之后,新增权限管理可以通过官方api判断用户的运行状态: ...
- Linux下载jdk ,Linux如何下载jdk
Linux下载jdk Linux如何下载jdk >>>>>>>>>>>>>>>>>>> ...
- asp.net命名规范
以下命名规范是在编程中,可以辅助快速编程的良好方式之一,我一点点的整理出来,以便形成自己的编程规范.还有待完善... 0.产品命名规范: 结构 层次 产品 模块 功能 命名规则 UI(界面层) Web ...
- jsp中<c:if>与<s:if>的区别
<c:if>时jstl标签,一般与el表达式一起使用,参考http://www.360doc.com/content/11/1121/16/7874148_166229306.shtml ...
- 修改tomcat默认的端口号
协同管理系统黙认使用Tomcat默认的端口8080,除8080端口外Tomcat还会占用8005,8009和8443端口.如果这4个端口已被占用,可以将协同管理系统修改为使用其它端口. 修改方法如下: ...
- (转)应用内存优化之OnLowMemory&OnTrimMemory
1.应用内存onLowMemory& onTrimMemory优化 onLowMemory& onTrimMemory简介:OnLowMemory是Android提供的API,在系统内 ...