由于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实现定时任务相关推荐

  1. 【Linux】23.ubuntu定时执行脚本/etc/crontab 和 定时任务不执行的解决办法

    ubuntu定时执行脚本/etc/crontab 和 定时任务不执行的解决办法 定时任务失效的问题: 如果发现/etc/crontab中的定时任务没执行,可以使用/etc/init.d/cron st ...

  2. asp python 定时任务_Ubuntu使用crontab定时执行python脚本

    转载其他博主的博客,记录过程,及使用中的一些问题 有时会遇到需要在linux的主机上定时的执行某个python脚本来处理事情的需求,这时可以考虑使用crontab来实现. 关于crontab的介绍,参 ...

  3. linux crontab工作日志,linux使用crontab执行定时任务

    1.当前有个项目,由于没能找到更好的方式解决这个问题,只能使用Linux的定时任务代替,使用crontab定时执行php文件等. 一般套件服务器配置差不多都安装了crontab服务,所以可以直接使用即 ...

  4. 小白成长之路-linux定时任务cron和crontab

    Linux定时任务 一.为啥要学习定时任务 在我们现实生活中处处可以用到定时任务. 如: 亲爱的,2020年4月1号会上映一部动画片电影我们去看看啊. 明天上午老师要看论文了 我作业还没写,明天早上上 ...

  5. 【软件教程】在Ubentu上使用Crontab设置定时任务

    在Linux上使用Crontab设置定时任务 设置任务有两个方法 使用crontab –e (非root用户可以使用) 文章用的这个 修改/etc/crontab文件(只有root用户可以用) 工具: ...

  6. centos 删除crontab_centos crontab(定时任务) 使用

    一.介绍 crontab命令的功能是在一定的时间间隔调度一些命令的执行.当安装完成操作系统之后,默认便会启动此任务调度命令.crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动 ...

  7. cmd脚本win10使用schtasks命令实现定时任务

    cmd脚本win10使用schtasks命令实现定时任务 新建txt文本输入以下代码.本次事例是实现每天晚上22:40:00.22:41:00.22:42:00启动指定脚本 @echo off sch ...

  8. 系统定时任务linux,Linux系统管理之定时任务

    我们来平民化的理解一下什么是定时任务,Linux定时任务类似于我们平时生活中的闹钟,根据我们设定好的时间,定点去执行某件事情.Linux定时任务命令是 crontab,该命令需要 crond 服务支持 ...

  9. 定时脚本任务列子(crontab)

    定时任务命令 1,定时任务服务提供crontab命令来设定服务 2,crontab -e 编辑某个用户的cron服务 3,crontab -l 列出某个用户cron服务的详细内容 4,crontab ...

最新文章

  1. Active Directory操作主机的转移 —图形操作
  2. rsync源目录写法的一点小细节
  3. 开源开放是人工智能发展主要趋势之一
  4. js控制每行输出2个LI隔行换色
  5. 五十六、Java的json解析库Json-lib和Gson
  6. multiple多图选择,借助FormData通过ajax实现上传
  7. 使用BeautifulSoup爬取“0daydown”网站的信息(2)——字符编码问题解决
  8. C语言自己写代码实现的strcmp函数
  9. 基恩士PLC⑤--Fault程序实例笔记
  10. matlab简易画爱心
  11. CSS:line-height是什么?,height是什么?
  12. 用html写一个计时器
  13. Mac自带FTP工具用法
  14. Java数据结构与算法(二)
  15. C语言中%d,%s,%x,%f,%.100f,%的意思
  16. 深入理解计算机系统 (第 1 节)
  17. 联想拯救者isk15安装固态硬盘记录
  18. idea操作git时 合并分支+解决冲突
  19. 长方形图片html圆形,css实现圆角矩形、半圆、圆形效果—border-radius使用详解
  20. VRF(虚拟路由转发)

热门文章

  1. asp.net mvc 客户端加验证非空验证数据库是否存在验证
  2. IDEA中Artifact的配置
  3. 一个棋牌游戏的服务端开发1
  4. python给我做500份问卷
  5. 大数据的分布式数据库相关知识
  6. 纯shell实现文本替换
  7. webstorm2019 汉化后无法设置 webstorm最新汉化包
  8. 使用Python调用opencv学习(-)打开图片,显示图片
  9. 忽略validateRequest设置
  10. HACKTHEBOX——Nibbles