TShopping

 找回密碼
 註冊
搜索
查看: 2434|回復: 0
打印 上一主題 下一主題

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2010-7-13 23:36:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
 
Push to Facebook
網站建設中利用PHP自動執行任務代碼是很有用的,如讓程序定期自動生成靜態頁面等。如果您是PHP程序員,學習Javascript、Ajax、DIV+CSS、這些都是很有必要的。

1.在某個固定的時間執行的PHP代碼:

  1. //計劃執行時間
  2. if($job=="cron"){
  3. check_method();
  4. //查詢數據庫的下一個時間是否小於現在的時間
  5. if($maxrecord["deltemptime"]<$nowtime["timestamp"]){
  6. $crondb = array();
  7. //day為0為每日 week周 minute時間斷 hour什麼時侯開始
  8. $rt["cron"] = array("day"=>"0","week"=>$config["cron_week"],"m"=>$config["cron_minute"],"hour"=>$config["cron_hour"]);
  9. $crondb[] = $rt;
  10. }
  11. foreach ($crondb AS $key => $cron_val){
  12. //設置了允許分鐘段
  13. if (!empty($config["cron_minute"])){
  14. $m = explode(" ", $config["cron_minute"]);
  15. $m_now = intval(local_date("i",$nowtime["timestamp"]));
  16. if (!in_array($m_now, $m)) {//不包含此分鐘的跳出
  17. continue;
  18. }
  19. }
  20. /*執行任務*/
  21. /*********此處是你寫的任務***********************/
  22. $next_time = get_next_time($cron_val["cron"]);
  23. $DB->query("UPDATE `maxrec` SET `deltemptime`={$next_time}");
  24. }
  25. exit;
  26. }

複製代碼
2.隔時生成首頁的PHP代碼:
  1. set_time_limit(0);
  2. $baseCmsUrl = "http://www.teshopping.com.tw";//你網站的根網址,結束不要加 /
  3. $dmPageName = "index.php";//動態主頁的名稱
  4. $stPageName = "index.html";//生成靜態主頁的名稱
  5. $mkTime = 3600;//你希望多長時間更新一次,單位是秒
  6. //下面是執行的代碼
  7. $tureStFile = dirname(__FILE__)."/".$stPageName;
  8. $ftime = @filemtime($tureStFile);
  9. if(!file_exists($tureStFile) || ($ftime < time()-$mkTime))
  10. {
  11. $body = file_get_contents($baseCmsUrl."/".$dmPageName);
  12. $fp = fopen($tureStFile, "w");
  13. fwrite($fp, $body);
  14. fclose($fp);
  15. }
複製代碼
將上面代碼保存為task.php
在經常訪問的頁面調用:

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


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

 

臉書網友討論
*滑块验证:
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2024-5-8 12:57 , Processed in 0.062087 second(s), 18 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表