woff 發表於 2010-7-13 23:36:51

網站建設中利用PHP自動執行任務代碼自動生成靜態頁面

網站建設中利用PHP自動執行任務代碼是很有用的,如讓程序定期自動生成靜態頁面等。如果您是PHP程序員,學習Javascript、Ajax、DIV+CSS、這些都是很有必要的。

1.在某個固定的時間執行的PHP代碼:
//計劃執行時間
if($job=="cron"){
check_method();
//查詢數據庫的下一個時間是否小於現在的時間
if($maxrecord["deltemptime"]<$nowtime["timestamp"]){
$crondb = array();
//day為0為每日 week周 minute時間斷 hour什麼時侯開始
$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){
//設置了允許分鐘段
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;
}
}
/*執行任務*/
/*********此處是你寫的任務***********************/
$next_time = get_next_time($cron_val["cron"]);
$DB->query("UPDATE `maxrec` SET `deltemptime`={$next_time}");
}
exit;
}

2.隔時生成首頁的PHP代碼:set_time_limit(0);
$baseCmsUrl = "http://www.teshopping.com.tw";//你網站的根網址,結束不要加 /
$dmPageName = "index.php";//動態主頁的名稱
$stPageName = "index.html";//生成靜態主頁的名稱
$mkTime = 3600;//你希望多長時間更新一次,單位是秒
//下面是執行的代碼
$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
在經常訪問的頁面調用:

3.PHP自動執行任務,關掉頁面或瀏覽器也會自動定時執行:ignore_user_abort(); //即使Client斷開(如關掉瀏覽器),PHP腳本也可以繼續執行.
set_time_limit(0); // 執行時間為無限制,php默認的執行時間是30秒,通過set_time_limit(0)可以讓程序無限制的執行下去
$interval=60*5; // 每隔5分鐘運行
do{
$fp = fopen("test.txt","a");
fwrite($fp,"test");
fclose($fp);
sleep($interval); // 按設置的時間等待5分鐘循環執行
}while(true);

首先運行該程序,然後關閉該頁面,程序仍然運行中,test便會每隔30秒的寫入到text3.txt文件。
以上幾個PHP自動執行任務的代碼,好好掌握將會對PHP程序員們在網站建設過程中有所幫助,如生成HTML靜態文件等。
在網站建設過程中,如果想讓您的網站有更好的性能,更人性化的功能,那就得學會更多的代碼程序技巧。如果您是PHP程序員,學習Javascript、Ajax、DIV+CSS、這些都是很有必要的。因為有些功能PHP可能不好去實現,但是要是使用Javascript、Ajax、DIV+CSS可能就會方便很多多了
頁: [1]
查看完整版本: 網站建設中利用PHP自動執行任務代碼自動生成靜態頁面