PHP自動執(zhí)行任務(wù)的網(wǎng)站建設(shè)代碼
PHP自動執(zhí)行任務(wù),關(guān)掉頁面或?yàn)g覽器也會自動定時(shí)執(zhí)行:
<?php
ignore_user_abort(); //即使Client斷開(如關(guān)掉瀏覽器),PHP腳本也可以繼續(xù)執(zhí)行.
set_time_limit(0); // 執(zhí)行時(shí)間為無限制,php默認(rèn)的執(zhí)行時(shí)間是30秒,通過set_time_limit(0)可以讓程序無限制的執(zhí)行下去
$interval=60*5; // 每隔5分鐘運(yùn)行
do{
$fp = fopen('test.txt','a');
fwrite($fp,'test');
fclose($fp);
sleep($interval); // 按設(shè)置的時(shí)間等待5分鐘循環(huán)執(zhí)行
}while(true);
?>
首先運(yùn)行該程序,然后關(guān)閉該頁面,程序仍然運(yùn)行中,test便會每隔30秒的寫入到text3.txt文件。
隔時(shí)生成首頁的PHP代碼:
<?php
set_time_limit(0);
$baseCmsUrl = "http://www.studstu.com";//你網(wǎng)站的根網(wǎng)址,結(jié)束不要加 /
$dmPageName = "index.php";//動態(tài)主頁的名稱
$stPageName = "index.html";//生成靜態(tài)主頁的名稱
$mkTime = 3600;//你希望多長時(shí)間更新一次,單位是秒
//下面是執(zhí)行的代碼
$tureStFile = dirname(__FILE__).'/'.$stPageName;
$ftime = @filemtime($tureStFile);
if(!file_exists($tureStFile) || ($ftime < time()-$mkTime))
{
$body = file_get_contents($baseCmsUrl.'/'.$dmPageName);
$fp = fopen($tureStFile, 'w');
fwrite($fp, $body);
fclose($fp);
}
?>
將上面代碼保存為task.php
在經(jīng)常訪問的頁面調(diào)用:<script language='Javascript' src='task.php'></script>
在某個(gè)固定的時(shí)間執(zhí)行的PHP代碼:
<?php
//計(jì)劃執(zhí)行時(shí)間
if($job=='cron'){
check_method();
//查詢數(shù)據(jù)庫的下一個(gè)時(shí)間是否小于現(xiàn)在的時(shí)間
if($maxrecord['deltemptime']<$nowtime['timestamp']){
$crondb = array();
//day為0為每日 week周 minute時(shí)間斷 hour什么時(shí)侯開始
$rt['cron'] = array('day'=>'0','week'=>$config['cron_week'],'m'=>$config['cron_minute'],'hour'=>$config['cron_hour']);
$crondb[] = $rt;
}
foreach ($crondb AS $key => $cron_val){
//設(shè)置了允許分鐘段
if (!empty($config['cron_minute'])){
$m = explode(' ', $config['cron_minute']);
$m_now = intval(local_date('i',$nowtime['timestamp']));
if (!in_array($m_now, $m)) {//不包含此分鐘的跳出
continue;
}
}
/*執(zhí)行任務(wù)*/
/*********此處是你寫的任務(wù)***********************/
$next_time = get_next_time($cron_val['cron']);
$DB->query("UPDATE `maxrec` SET `deltemptime`={$next_time}");
}
exit;
}
?>
復(fù)制本文《PHP自動執(zhí)行任務(wù)的網(wǎng)站建設(shè)代碼》地址給好友: