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

先看看首頁為什麼一次就要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):
點選工作排程的圖示,再選擇標準模式,設定範例如下:

在Google及Yahoo找資料,已成為許多人每天必行的公事。「網路」的無遠弗屆,造就了一個世界級的知識寶庫,著實讓我受益良多。
設立此部落格除用做網路行銷、學習記事與知識管理外,希望也能做些回饋和經驗分享,如果有人能從這裡的文章得到一點幫助就好了...
網站生日:2008/09/16 年紀:41個多月
寫下留言