您当前的位置: 首页 > 网站编程 > PHP教程 > linux实现php定时执行cron任务详解

linux实现php定时执行cron任务详解

作者:不详 来源:网络 发布时间: 2014-08-14 09:07 点击:
linux实现php定时执行cron任务 对于PHP本身并没有一套解决方案来执行定时任务,不过是借助sleep函数完成的。这种方就是要提前做一些配置,如实现过程: 代码如下: ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(

linux实现php定时执行cron任务详解

  linux实现php定时执行cron任务

  对于PHP本身并没有一套解决方案来执行定时任务,不过是借助sleep函数完成的。这种方就是要提前做一些配置,如实现过程:

  代码如下:

  ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.

  set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去

  $interval=60*30;// 每隔半小时运行

  do{

  //这里是你要执行的代码  

  sleep($interval);// 等待5分钟

  }while(true);

  不过关于这种方式我有一些担心性能方面的问题,不过也是个临时的方法。

  本人推荐的方式采用脚本来实现,利用OS本身的定时任务机制,windows上场利用bat脚本。不过本人没有在window上尝试过。那我就讲讲在linux中的实现。

  如果你的web server是基于linux的,那么可以采用linux下的cron job 来完成。以RedHat5 为例,我们只需要预先要定时执行的逻辑代码。例如demo.php

  代码如下:

  <?php

  echo "Hello";

  ?>

  然后是吧php用shell脚本一封装,在shell脚本中调用demo.php,demo.sh代码如下:

  代码如下:

  #!/bin/bash

  #if you php install to /usr/local/php/

  /usr/local/php/bin/php /home/xx-user/demo.php

  完成shell脚本的编写之后,确保它有足够的这行权限,例如:/bin/chmod u+x demo.sh.

  然后配置linux上的cronjob,cronjob是linux上默认安装的。如果你的任务是需要按小时、天、周、月来执行的话,那么你直接可以将你的demo.sh脚本拷贝到

  /etc/cron.hourly 、/etc/cron.daily 、/etc/cron.weekly、/etc/cron.monthly 就ok了,这样就可以完成你的任务了 。如果到某个时间点想移除定时任务,那就从上面这些folder中move到其它地方或者直接删除掉就ok了。

  如果你的脚本有特殊的执行时间,例如每个星期的周二,或者是每个月的15号执行。那么你就需要配置属于你自己的cron job.

  关于cron的特殊的配置请参考:http://www.pantz.org/software/cron/croninfo.html

  这里我就按照每天的上午12点到下午的14点钟之间每2分钟运行一次这个脚本,那么配置如下(例如demo.sh是位于/tmp 目录下):

  首先在linux的命令行中执行crontab -e ,然后把规则输入到里面:

  代码如下:

  */2 12-14 * * * /tmp/demo.sh

  带输入完成之后按键盘上的“Esc”键,然后输入:wq,编辑页面就退出了。然后你可以用crontab -l 来查看你刚编辑的cron job.

  到此时特殊的cron 也就完成了。例如你刚才是用linux下的demo账户来完成上面的步骤,那么还有一个简单的方法就是直接可以编辑/var/spool/cron/demo 这个文件,可以直接

  修改你的cron job. 例如 :vi /var/spool/cron/demo

  利用OS的方式来管理你的定时任务是很快捷的,而且不用你担心性能的问题,除非你的脚本本身存在一些问题。这样的方式易于维护,可以修改定时执行的计划,也可以轻松的移除和新增其它的定时任务。
分享到:
本文"linux实现php定时执行cron任务详解"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 广告合作 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4