php靜態化為html-簡單做-定時做

日前一位朋友求救說它有個客戶的php網站,client每次request首頁都會產生近五十個mysql連線,而且網站還放在虛擬主機上面,所以常常一整天下來就會被主機商lock,問我該怎麼辦?
php靜態化為html-簡單做-定時做

先看看首頁為什麼一次就要50個資料庫連結…喔,原來類似市集的入口網站,有許多不同分類及動態廣告的呈現方式。

既然連線數省不掉,就建議他和業主溝通,讓系統每十五分鐘讀取一次該php首頁,並將更新後的資料自動建立html頁面;然後變更首頁連結,將使用者都導入html頁面;簡單完成php靜態化快取的工作,降低主機負擔。

1. 編寫快取程式cache.php,如下例(按需求自行更改):

<?php
//記錄原始的timeout秒數
$old_timeout = ini_get('default_socket_timeout');

//設定新的timeout秒數
ini_set('default_socket_timeout',20);

//取得php首頁的內容
if (false !== ($contents = file_get_contents('http://網站路徑/index.php'))) {

  //如果內容有讀取完成至</html>
  if (strpos($contents,'</html>')!==false) {
  
    //建立html首頁
    $html = fopen('/儲存路徑/index.html','w'); 
    fwrite($html,$contents); 
    fclose($html);
  }
}

//回復原始的timeout秒數
ini_set('default_socket_timeout',$old_timeout);
?>

2. 再來是設定排程去執行它,如圖(登入cpanel):
點選工作排程的圖示,再選擇標準模式,設定範例如下:
設定排程去執行它

您可能也會喜歡…

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *