php中怎么做定时任务,PHP-PHP中的定时任务如何实现?

这里也有相关回答 @PHP怎么写定时任务?,用到的函数 ignore_user_abort(),set_time_limit(0),sleep($interval)

此代码只要运行一次后关闭浏览器即可。

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

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

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

do {

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

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

} while(true);

下面是我用上面的方法写的一个监控。

ini_set("error_reporting","E_ALL & ~E_NOTICE");

function_exists('date_default_timezone_set') && date_default_timezone_set('Etc/GMT-8');

$stime = date("n月j日 H:i:s");

//即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.

ignore_user_abort();

// 执行时间为无限制,php默认的执行时间是30秒,通过set_time_limit(0)可以让程序无限制的执行下去

set_time_limit(0);

// 每隔5分钟运行

$interval=60*5;

do{

/* 监控的网址 */

$host ='www.baidu.com';

/* 下面的是网站首页源代码中的一段特殊字符串 */

$find ='baidu';

if (!check($host,$find)){

alert($host);

}

file_put_contents('put.txt',' Current Time: '.$stime);

if( $stop == 500 ) break;

// 等待5分钟

sleep($interval);

}while(true);

function check($host,$find){

$fp =fsockopen($host, 80,$errno,$errstr, 10);

if (!$fp) {

echo "$errstr ($errno)n";

} else {

$header ="GET / HTTP/1.1rn";

$header .="Host: $hostrn";

$header .="Connection: closernrn";

fputs($fp,$header);

while (!feof($fp)) {

@$str .=fgets($fp, 1024);

}

fclose($fp);

return (strpos($str,$find) !== false);

}

}

function alert($host){

mail('admin@office.net','监控项目 [a] 故障通知','监控项目 [yaoinfo( '.$host.' )] 于 '.$stime.' 不可用(无法连接服务器)');

}

function alertok($host){

mail('admin@office.net','监控项目 [b] 可用(200 OK)','监控项目 [yaoinfo( '.$host.' )] 于 '.$stime.' 可用(200 OK)');

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值