PHP定时执行任务/Cron Job
对于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 ,然后把规则输入到里面:
*/ - * * * /tmp/demo.sh
带输入完成之后按键盘上的“Esc”键,然后输入:wq,编辑页面就退出了。然后你可以用crontab -l 来查看你刚编辑的cron job.
到此时特殊的cron 也就完成了。例如你刚才是用linux下的demo账户来完成上面的步骤,那么还有一个简单的方法就是直接可以编辑/var/spool/cron/demo 这个文件,可以直接
修改你的cron job. 例如 :vi /var/spool/cron/demo
利用OS的方式来管理你的定时任务是很快捷的,而且不用你担心性能的问题,除非你的脚本本身存在一些问题。这样的方式易于维护,可以修改定时执行的计划,也可以轻松的移除和新增其它的定时任务。
PHP定时执行任务/Cron Job的更多相关文章
- linux下使用crontab定时执行脚本
使用crontab定时执行脚本 cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务: crontab –e : 修改 crontab 文件,如果文件不存在会自 ...
- linux 定时执行 cron指令
linux 中的 cron 定时执行命令,先上例子:每间隙两分钟把 "Hello world"写到 /tmp/hello.txt crontab -e */2 * * * * ec ...
- cron Linux下的定时执行工具
说明:测试平台 Ubuntu 16.04.4 LTS cron是一个Linux下的定时执行工具,可以在无需人工干预的情况下运行作业.所以,在Linux中,周期性执行的任务一般由cron这个守护进程来 ...
- linux实现php定时执行cron任务详解(转)
对于PHP本身并没有一套解决方案来执行定时任务,不过是借助sleep函数完成的.这种方就是要提前做一些配置,如实现过程: 复制代码 代码如下: ignore_user_abort();//关掉浏览器, ...
- Cron表达式在 定时执行专家 5.0 中的使用方式
在<定时执行专家 V5.0>程序内部使用了包含 6 位的 Cron表达式,第一个字段(second)没有使用.程序内部一直 second 位是 0.在 Cron表达式的界面上可以设置 5位 ...
- Ubuntu cron定时执行任务
1.添加自定义事件 crontab -e 2.选定编辑器 3.添加执行代码 * * * * /usr/bin/curl http://www.exmple.com/cron.php crontab 命 ...
- 【转】linux 定时执行shell脚本
在oracle 中可以利用dbms_job包定时执行pl/sql.sql过程,在像备份等需要在操作系统级定时任务只能采用crontab来完成 本文讲述crontab具体用法,以供备忘. 在oracle ...
- Linux下定时执行脚本(转自Decode360)
文章来自:http://www.blogjava.net/decode360/archive/2009/09/18/287743.html Decode360's Blog 老师(业精于勤而荒于嬉 ...
- linux定时执行任务crontab命令用法
linux系统的定时任务是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的.另外, 由于使用者自己也可以设置计划任务,所 ...
随机推荐
- OpenVPN中的几个和连接相关的Timer解析
在OpenVPN中存在几个计时器,这些计时器限制着OpenVPN的一些特定行为的最长持续时间,如果设置不好,就会带来莫名其妙的断线问题,然而如何设置这些计数器也没有一个通用的方案,特定情况下不能太大也 ...
- python--json & pickle 模块
用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps. ...
- python解决SNIMissingWarning和InsecurePlatformWarning警告
在想要获取https站点的资源时,会报出SNIMissingWarning和InsecurePlatformWarning警告 SNIMissingWarning: An HTTPS request ...
- 为Google Reader守夜。。。
Google的阅读器快要关闭了... 立刻截图留恋呢,以后就没机会了. 唉,真是令人惋惜. 虽然我接触Google Reader还不到一年,但是我已经习惯当连上WiFi时马上更新一下手机上的gRead ...
- php.ini 配置文件的深入解析
[PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化, ; 在使用新的PHP版本前,研究一下php.ini会有好处的 ;;;;;;;; ...
- Java中String类的format方法使用总结
可参考: http://www.cnblogs.com/fsjohnhuang/p/4094777.html http://kgd1120.iteye.com/blog/1293633 String类 ...
- 【数值方法,水题】UVa 10341 - Solve It
题目链接 题意: 解方程:p ∗ e^(−x) + q ∗ sin(x) + r ∗ cos(x) + s ∗ tan(x) + t ∗ x^2 + u = 0 (0 <= x <= 1) ...
- 【置换,推理】UVa 1315 - Creaz tea party
Dsecription n participants of «crazy tea party» sit around the table. Each minute one pair of neighb ...
- poj 1987 树的分治
思路:1741的A1送 1. #include<iostream> #include<cstring> #include<algorithm> #include&l ...
- 嵌入式开发笔记 - U-Boot相关
1.U-boot使用准备 1.1 U-boot下载 通过德国的denx软件中心提供的FTP下载合集,下载网址: ftp://ftp.denx.de/pub/u-boot/