PHP实现执行定时任务
首先用命令检查服务是否在运行
systemctl status crond.service
如果服务器上没有装有crontab ,则可以执行
yum install vixie-cron
yum install crontabs
常用指令
systemctl restart crond.service #启动服务 systemctl reload crond.service #重新载入配置 systemctl status crond.service #查看crontab服务状态 systemctl enable crond.service #开机自启动
启动服务之后可以输入指令(按i进行编辑)
crontab -u root -e #进入定时任务编辑
查看crontab定时执行任务列表
crontab -l
相关参数
基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示 (每分钟用或者 */1表示,/n表示每n分钟,例如*/8就是每8分钟的意思,下面也是类推)
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
查看动态日志(如果出现很多mailed 33 bytes of output bu get status 0x004b#012请移步:https://bbs.aliyun.com/simple/t135851.html):
tail -f /var/log/cron
例子
*/2 * * * * curl -o /home/index.html www.baidu.com #每隔两分钟使用curl 访问www.baidu.com 并将结果写入/home/index.html 文件
00 * * * * lynx -dump https://www.yourdomain.com/script.php #当前时间的分钟数为00时,执行该定时任务
lynx -dump https://www.yourdomain.com/script.php #通过lynx访问这个url。我们在使用中主要用到lynx、curl、wget来实现对url的远程访问,而如果要提高效率,直接用php去执行本地php文件是最佳选择
00 */2 * * * /usr/bin/php /home/www/script.php #直接用php去执行本地php文件
这条语句就可以在每2小时的0分钟,通过linux内部php环境执行script.php,注意,这里可不是通过url访问,通过服务器环境来执行哦,而是直接执行,因为绕过了服务器环境,所以效率当然要高很多。
至于为什么要用/usr/bin/php可以使用命令:which php 或者 whereis php 查看
在crontab里面,将执行的结果输出一个文件当中。然后在这个文件当中查看执行情况。例如:
*/1 * * * * /usr/bin/php /data/dou/web/api/cron.php >> /data/dou/web/cron.txt
连续执行命令:
按顺序依次执行(通过`;`分隔)
cmd1;
cmd2;
cmd3;
按逻辑与执行(&&分隔)
cmd1&&cmd2&&cmd3;
cmd4;
按逻辑或执行:(||分隔)
cmd1||cmd2||cmd3;
cmd4;
即回传值为0时逻辑与继续执行下去,回传值不为0时逻辑或继续执行,跟平时程序的逻辑与跟逻辑或短路一样(`?`为回传值,命令执行正确时回传值为0 通过echo $?可以试验,具体搜"回传")
组合:
cmd1;
cmd2||cmd3&&cmd4;
cmd5;
先执行cmd1然后执行cmd2,如果cmd2回传值非0则执行cmd3,如果cmd3回传值为0则执行cmd4,然后继续按顺序执行
时间设定规则示例:
1.每分钟定时执行一次规则:
每1分钟执行: */1 * * * *或者* * * * *
每5分钟执行: */5 * * * *
2.每小时定时执行一次规则:
每小时执行: 0 * * * *或者0 */1 * * *
每天上午7点执行:0 7 * * *
每天上午7点10分执行:10 7 * * *
3.每天定时执行一次规则:
每天执行 0 0 * * *
4.每周定时执行一次规则:
每周执行 0 0 * * 0
5.每月定时执行一次规则:
每月执行 0 0 1 * *
6.每年定时执行一次规则:
每年执行 0 0 1 1 *
7.其他例子
5 * * * * 指定每小时的第5分钟执行一次ls命令
30 5 * * * ls 指定每天的 5:30 执行ls命令
30 7 8 * * ls 指定每月8号的7:30分执行ls命令
30 5 8 6 * ls 指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls 指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
30 3 10,20 * * ls 每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]
25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]
*/15 * * * * ls 每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
30 6 */10 * * ls 每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls命令。 ]
PHP实现执行定时任务的更多相关文章
- PHP执行定时任务
PHP执行定时任务 1.当PHP像文件写入信息的时候 <?php for ($i=0; $i < 10; $i++) { $str="我是第".$i."条&q ...
- 使用Timer和ScheduledThreadPoolExecutor执行定时任务
Java使用Timer和ScheduledThreadPoolExecutor执行定时任务 定时任务是在指定时间执行程序,或周期性执行计划任务.Java中实现定时任务的方法有很多,主要JDK自带的一些 ...
- java中服务器启动时,执行定时任务
package com.ripsoft.util; import java.util.Calendar; import java.util.Timer; import javax.servlet.Se ...
- Jenkins入门之执行定时任务
通过前面我们讲解了如何通过Jenkins执行windows command,powershell脚本,此时我们便可以开始完成一些简单任务了,然而可能看到我们都是通过手动按下Build Now按钮来执行 ...
- AspNet MVC中使用Hangfire执行定时任务
Hangfire在Aspnet中执行定时任务: 第一步: NuGet中加入Hangfire包 第二步: 添加Owin的自启动 第三步.Hangfire的后台控制仪表盘默认情况下只能本地访问,外网访问需 ...
- .NET Core中使用IHostedService结合队列执行定时任务
最近遇到了这样的场景:每隔一段时间,需要在后台使用队列对一批数据进行业务处理. Quartz.NET是一种选择,在 .NET Core中,可以使用IHostedService执行后台定时任务.在本篇中 ...
- 在ASP.NET MVC4中使用Quartz.NET执行定时任务
本篇在ASP.NET MVC下实践使用Quartz.NET执行定时任务. 首先通过NuGet安装Quartz.NET. 使用Quartz.NET的大致思路是:1.实现IJob接口,定义具体要做的事情2 ...
- ubuntu 下执行定时任务
Window shell文件在linux系统下执行不了的解决办法 一些人喜欢用vim来写linux shell script, 但是, 有的人喜欢在Windows下用一些方便的编辑器(比如鼎鼎大名的N ...
- MVC中使用Hangfire执行定时任务
需求描述 项目中有一个通知公告的功能,在后台管理员添加公告后需要推送消息给所有注册用户,让其查看消息.消息推送移动端采用极光推送,但是消息在何时发送是个问题,比如说有一个重要的会议通知,可能希望在会议 ...
- 使用Quartz.net来执行定时任务
Quartz.net使用方法:http://www.cnblogs.com/lizichao1991/p/5707604.html 最近,项目中需要执行一个计划任务,组长就让我了解一下Quartz.n ...
随机推荐
- 【DRF框架】认证组件
DRF框架的认证组件 核心代码: self.perform_authentication(request) 框架自带模块: from rest_framework import a ...
- C#编译相关知识
C#代码编译成MSIL代码. 当用户编译一个.NET程序时,编译器将源代码翻译成一组可以有效地转换为本机代码且独立于CPU的指令.当执行这些指令时,实时(JIT)编译器将它们转化为CPU特定的代码.由 ...
- typescript 箭头表达式
箭头表达式:用来声明匿名函数,消除传统匿名函数的this指针问题 1.无参 var sum = () => {} 2.一个参数 var sum = arg2 => {} 3.多个参数 va ...
- 使用docker 安装 LNMP
centos7 下 使用docker 安装 LNMP 一.安装 mysql 1 获取 mysql 镜像 docker pull mysql:5.7 2 创建mysql的镜像,并运行 docker ru ...
- Spring -07 -AOP [面向切面编程] - 使用注解@+ AspectJ 方式实现环绕/前/后等通知 -超简洁 --静态代理/动态代理{JDK/cglib}
1.spring 不会自动去寻找注解,必须告诉 spring 哪些包下的类中可能有注解;使用注解来取代配置文件.1.1 引入xmlns:context ,指定扫描范围 <context:comp ...
- 《你说对就队》第九次团队作业:【Beta】Scrum meeting 1
<你说对就队>第九次团队作业:[Beta]Scrum meeting 1 项目 内容 这个作业属于哪个课程 [教师博客主页链接] 这个作业的要求在哪里 [作业链接地址] 团队名称 < ...
- 4.1 vue-resource
全局拦截器.配置全局地址等:
- LightOJ - 1226 - One Unit Machine(排列组合)
链接: https://vjudge.net/problem/LightOJ-1226 题意: OUM is a one unit machine which processes jobs. Sinc ...
- NOIP2013积木大赛 [贪心]
大意 自己查去... 说明 这道题正解是贪心,但标程里是有这样一句话的:把序列分成(a1,..ai)(ai+1,...aj)......(ak,...an)多个非递减序列.然后所有段中最大值的和减去除 ...
- Mac 下Wireshark 找不到网卡
终端上面,执行如下命令: sudo chgrp admin /dev/bpf* sudo chmod g+rw /dev/bpf*