您的位置:首页 > 编程语言 > PHP开发

PHP不支持多线程,有时候处理问题不是那么爽,今天谈论一下PHP定时执行的方法

2014-04-12 19:58 459 查看
摘要:PHP不支持多线程,有时候处理问题不是那么爽,今天谈论一下PHP定时执行的方法

PHP定时执行的三种方式实现

1、windows的计划任务
2、linux的脚本程序
3、让web浏览器定时刷新

具体实现

windows计划任务

PHP很少在win服务器上跑,具体实现也不再深究,看网上实现的原理大概是写bat脚本,然后让window任务添加执行这个bat脚本,具体可以参考:http://www.cnblogs.com/whoknows/articles/2228577.html

linux的脚本实现

这里主要使用到crontab这个命令,

使用方式:

crontabfilecrontab[-uuser][-uuser]{-l|-r|-e}

说明:

crontab是用来让使用者在固定时间或固定间隔执行程式之用

使用crontab写shell脚本,然后让PHP调用shell,这个是利用linux的特性,应该还不算PHP自身语言的特性

可以参看:http://www.centos.bz/2011/07/php-cron-job-linux-crontab/

PHP实现定时执行计划任务





使用php让浏览器刷新需要解决几个问题

PHP脚本执行时间限制,默认的是30m解决办法:set_time_limit();或者修改PHP.ini设置max_execution_time时间(不推荐)

如果客户端浏览器关闭,程序可能就被迫终止,解决办法:ignore_user_abort即使关闭页面依然正常执行

如果程序一直执行很有可能会消耗大量的资源,解决办法使用sleep使用程序休眠一会,然后在执行

PHP定时执行的代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27
<?php

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

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

$interval
=5;
//每隔5s运行

//方法1--死循环

do
{


echo
'测试'
.time().
'<br/>'
;


sleep(
$interval
);
//等待5s

}
while
(true);

//方法2---sleep定时执行


require_once
'./curlClass.php'
;
//引入文件




$curl
=
new
httpCurl();
//实例化


$stime
=
$curl
->getmicrotime();


for
(
$i
=0;
$i
<=10;
$i
++){




echo
'测试'
.time().
'<br/>'
;


sleep(
$interval
);
//等待5s




}


ob_flush();


flush
();


$etime
=
$curl
->getmicrotime();


echo
'<hr>'
;


echo
round
((
$etime
-stime),4);
//程序执行时间

?

1


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐