PHP执行定时任务

PHP在这方面应该说是比较弱,如果只用php去实现可以如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

<?php

 ignore_user_abort();//关闭浏览器后,继续执行php代码

 set_time_limit(0);//程序执行时间无限制

 $sleep_time = 1;//多长时间执行一次

 do{

 $fp = fopen('test.txt','a+');

 fwrite($fp,"这是一个php博客:phpddt.com \n");

 fclose($fp);

 sleep($sleep_time);

 }while(true);

  

?>

但是当我执行脚本的时候,即使我关闭了浏览器,我根本就没法去停止这段程序了,所以你需要一个执行脚本的开关,你可以用外部文件引入的方法来实现,在while循环的时候,include开关变量即可。那么就可以这样实现:
建立外部引入变量文件 switch.php  内容如下:

?

1

2

3

<?php

return 1;//1执行脚本 0退出执行脚本

?>

改良脚本如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?php

 ignore_user_abort();//关闭浏览器后,继续执行php代码

 set_time_limit(0);//程序执行时间无限制

 $sleep_time = 5;//多长时间执行一次

 $switch = include 'switch.php';

 while($switch){

 $switch = include 'switch.php';

 $fp = fopen('test.txt','a+');

 fwrite($fp,"这是一个php博客:phpddt.com $switch \n");

 fclose($fp);

 sleep($sleep_time);

 }

 exit();

  

?>

这个脚本只是测试可行,具体效率应该不高,对于lamp,你完全可以使用crontab 来实现。
再补充一段小代码:

?

1

2

3

4

5

6

7

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

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

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

do{

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

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

}while(true);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值