php如何实现定时任务,php定时任务方法,最佳解决方案,php自动任务处理
来源:互联网 发布:网络电视蚂蚁 编辑:程序博客网 时间:2024/06/05 15:55
定时任务对于php来说一直都是很多朋友的一个难题,但却很多地方都遇到了。
比如说:
游戏开发程序中,每隔10分钟给玩家发兵一次
sns社区中每隔20秒检测一下是否有人给我发消息
自动采集程序,每隔5分钟采集一次最新内容
微博数据同步,每隔10个小时通过微博api接口同步一次用户数据
……
大概有那么几种方法:
1.Linux系统
定时直接可以用cron来执行一个php脚本 或者其他语言的脚本[你要有足够的系统权限]
执行编辑cron命令
crontab
-e
比如每隔5分钟执行下 /root/bin目录下的test.php脚本
*/5 * * * * php /root/bin/test.php
2.windows系统
可用计划任务执行脚本,不举例
3.如果没有系统权限,那就往下看吧。
由于php属于解释型弱语言,所以做定时任务的时候不会像java那样容易,在java中直接给个进程就可以让系统执行定时任务,但是在php中没那么简单 设置都没有多线程的概念。
我第一次接触定时任务的时候是一个做php的朋友问我怎么实现定时发兵,我当时给出的答案是写一个包含文件,每次都执行的时候都调用这个文件检查是否有任务,但试想 如果没人触发怎么办,显然答案并不完美。
后来我又通过其他渠道获得了解决的最佳办法,而且我还亲自做了测试。
大致理念就是设定关闭浏览器程序也会停留在服务器内存中执行,并且相应时间永不过期
看程序:
ignore_user_abort(TRUE);
// 设定关闭浏览器也执行程序
set_time_limit(0);
// 设定响应时间不限制,默认为30秒
$count
= 0;
while
(TRUE)
{
sleep(5);
// 每5秒钟执行一次
// 写文件操作开始
$fp
=
fopen
(
"test"
.
$count
.
".txt"
,
"w"
);
if
(
$fp
)
{
for
(
$i
=0;
$i
<5;
$i
++)
{
$flag
=fwrite(
$fp
,
$i
.
"这里是文件内容www.uacool.com\r\n"
);
if
(!
$flag
)
{
echo
"写入文件失败"
;
break
;
}
}
}
fclose(
$fp
);
// 写文件操作结束
$count
++;
// 设定定时任务终止条件
if
(
file_exists
(
'lock.txt'
))
{
break
;
}
}
把这个文件命名为 tast.php 放在网站根目录
如: www.uacool.com/tast.php
访问此网页。此程序会再网站根目录不断生成名为test0.txt,test1.txt,test2.txt…的文本文件
访问后可关闭浏览器,不影响程序继续执行,如想阻止程序,请在网站根目录下放一个名为lock.txt的文件。
如:www.uacool.com/lock.txt
当然重新启动服务器或者重启电脑也可以阻止程序继续运行
相关内容:
windows的schtasks定时任务:http://www.cnblogs.com/lostyue/archive/2011/10/24/2223166.html
Cron服务是SAE为开发者提供的分布式定时服务:http://sae.sina.com.cn/?m=devcenter&catId=195
- php如何实现定时任务 php定时任务方法 最佳解决方案 php自动任务处理
- php如何实现定时任务,php定时任务方法,最佳解决方案,php自动任务处理
- php如何实现定时任务,php定时任务方法,最佳解决方案,php自动任务处理
- PHP实现定时任务
- php定时任务实现
- php实现定时任务
- php如何定时执行任务
- php定时计划任务实现方法
- php定时计划任务实现方法
- php定时执行任务实现方法详解
- php定时执行任务实现方法详解
- [php] 实现执行定时任务的方法
- php定时计划任务实现方法
- php定时计划任务实现方法
- PHP中实现定时任务
- PHP使用任务计划实现定时任务
- PHP实现定时任务的几种处理方法
- php定时任务,任务系统
- Spring依赖注入的XML配置文件的实现思想(1)——准备工作:如何读取XML的文件的内容
- 使用SQLite方式存储数据
- ODBC连接数据库的方法
- Android存储和加载本地文件(内部存储设备)
- Linux网络编程之TCP(下)- I/O数据复用
- php如何实现定时任务,php定时任务方法,最佳解决方案,php自动任务处理
- 1011. World Cup Betting (20)——PAT (Advanced Level) Practise
- Android 之 Window、WindowManager 与窗口管理
- 改vim为source insight
- Mac OS下SVN的使用:服务的和客户端
- maven常用指令
- [LeetCode]Longest Common Prefix
- HTTP请求响应关于缓存技术的探讨
- android入门——对话框(普通、列表带图标或普通列表、单选、多选)