PHP脚本定时任务实现及crontab实现定时任务
由于PHP只能被用户触发,被调用,调用后会自动退出内存,没有常驻内存。所以实现定时任务都是循环的执行某一个脚本。
PHP定时任务实现主要有两个方向:
1、循环脚本本身或脚本中代码循环执行
2、服务器定时调用php
先主要介绍php脚本循环执行方案:
方案1:
脚本中的代码循环执行。这种方法会占系统资源, 长时间运行,会有一些意想不到的隐患。比如内存管理方面的问题 。
eg:
//文件config.php
<?phpreturn true;//文件test.php
<?phpignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去,避免超时报错 $times=5;// 每隔5秒运行一次do{$run = include 'config.php';//开关if($run){echo time().'<br>';ob_flush();//将数据从php的buffer中释放出来flush();//将释放出来的数据发送给浏览器,这里必须要有这两个函数,不然无法输出时间戳,因为该脚本一直未执行完,具体可以参考http://blog.csdn.net/qq_21386275/article/details/65634786sleep($times);// 等待5秒}else{die('end');}}while(true);
方案二:
循环执行脚本,而不是脚本中的代码。
eg:
<?php
$isOn = 0;//开关
if($isOn){$time=2;$url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; echo time();//这里不需要下边两个函数,因为每一次echo都是脚本已经执行完了,具体参考http://blog.csdn.net/qq_21386275/article/details/65634786//ob_flush();//flush();sleep($time);echo "<script language='javascript' type='text/javascript'>"; echo "window.location.href='$url'"; echo "</script>";//file_get_contents($url); //实际循环脚本使用该函数或者curl函数
}else{die('end');
}
方案三
crontab定时任务
**1、**安装crontab
yum -y install vixie-cron
yum -y install crontabs
说明:
vixie-cron 软件包是 cron 的主程序;
crontabs 软件包是用来安装、卸载、或列举用来驱动 cron 守护进程的表格的程序。
**2、**配置
cron 是 linux 的内置服务,但它不自动启动,可以用以下的方法启动、关闭这个服务:
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看crontab服务状态
在CentOS系统中加入开机自动启动:
chkconfig --level 345 crond on
**3、**定时任务执行时间是写在etc/crontab文件中,下边示例是每天8点到21点,30分,访问百度,定时执行任务的日志是写在var/log/cron文件中的。
30 8-21 * * * root curl http://www.baidu.com
**4、**给php添加环境变量
①在/etc/profile文件最后一行添加 export PATH=$PATH:/data/php/bin
②执行source /etc/profile
或者./profile
让其生效
③执行php -v
验证其生效,执行echo $PATH
查看其设置的环境变量
**5、**添加定时任务,直接编辑/etc/crontab
29 8-21 * * * root curl http://www.baidu.com
#28 8-21 * * * root /data/php/bin/php /data/html/test.php
#28 8-21 * * * root /data/html/test.php
附:关于crontab相关说明
① /etc/crontab文件说明
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
HOME=/ //使用者运行的路径,这里是根目录
②run-parts使用
"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了
01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本
③相关规则说明
④cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务
⑤关于crontab权限,相关更深入理解,这里不做阐述,可自行查讯资料,可参考https://www.cnblogs.com/xingzc/p/5969777.html
PHP脚本定时任务实现及crontab实现定时任务相关推荐
- 【Linux】23.ubuntu定时执行脚本/etc/crontab 和 定时任务不执行的解决办法
ubuntu定时执行脚本/etc/crontab 和 定时任务不执行的解决办法 定时任务失效的问题: 如果发现/etc/crontab中的定时任务没执行,可以使用/etc/init.d/cron st ...
- asp python 定时任务_Ubuntu使用crontab定时执行python脚本
转载其他博主的博客,记录过程,及使用中的一些问题 有时会遇到需要在linux的主机上定时的执行某个python脚本来处理事情的需求,这时可以考虑使用crontab来实现. 关于crontab的介绍,参 ...
- linux crontab工作日志,linux使用crontab执行定时任务
1.当前有个项目,由于没能找到更好的方式解决这个问题,只能使用Linux的定时任务代替,使用crontab定时执行php文件等. 一般套件服务器配置差不多都安装了crontab服务,所以可以直接使用即 ...
- 小白成长之路-linux定时任务cron和crontab
Linux定时任务 一.为啥要学习定时任务 在我们现实生活中处处可以用到定时任务. 如: 亲爱的,2020年4月1号会上映一部动画片电影我们去看看啊. 明天上午老师要看论文了 我作业还没写,明天早上上 ...
- 【软件教程】在Ubentu上使用Crontab设置定时任务
在Linux上使用Crontab设置定时任务 设置任务有两个方法 使用crontab –e (非root用户可以使用) 文章用的这个 修改/etc/crontab文件(只有root用户可以用) 工具: ...
- centos 删除crontab_centos crontab(定时任务) 使用
一.介绍 crontab命令的功能是在一定的时间间隔调度一些命令的执行.当安装完成操作系统之后,默认便会启动此任务调度命令.crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动 ...
- cmd脚本win10使用schtasks命令实现定时任务
cmd脚本win10使用schtasks命令实现定时任务 新建txt文本输入以下代码.本次事例是实现每天晚上22:40:00.22:41:00.22:42:00启动指定脚本 @echo off sch ...
- 系统定时任务linux,Linux系统管理之定时任务
我们来平民化的理解一下什么是定时任务,Linux定时任务类似于我们平时生活中的闹钟,根据我们设定好的时间,定点去执行某件事情.Linux定时任务命令是 crontab,该命令需要 crond 服务支持 ...
- 定时脚本任务列子(crontab)
定时任务命令 1,定时任务服务提供crontab命令来设定服务 2,crontab -e 编辑某个用户的cron服务 3,crontab -l 列出某个用户cron服务的详细内容 4,crontab ...
最新文章
- Active Directory操作主机的转移 —图形操作
- rsync源目录写法的一点小细节
- 开源开放是人工智能发展主要趋势之一
- js控制每行输出2个LI隔行换色
- 五十六、Java的json解析库Json-lib和Gson
- multiple多图选择,借助FormData通过ajax实现上传
- 使用BeautifulSoup爬取“0daydown”网站的信息(2)——字符编码问题解决
- C语言自己写代码实现的strcmp函数
- 基恩士PLC⑤--Fault程序实例笔记
- matlab简易画爱心
- CSS:line-height是什么?,height是什么?
- 用html写一个计时器
- Mac自带FTP工具用法
- Java数据结构与算法(二)
- C语言中%d,%s,%x,%f,%.100f,%的意思
- 深入理解计算机系统 (第 1 节)
- 联想拯救者isk15安装固态硬盘记录
- idea操作git时 合并分支+解决冲突
- 长方形图片html圆形,css实现圆角矩形、半圆、圆形效果—border-radius使用详解
- VRF(虚拟路由转发)