2015-01-11 22 views
1

我其實沒有問題,但我有一個問題。 比如我有一個php index.php文件內碼:php中的Mysql連接安全使用不會超載

$query = "SELECT * FROM users WHERE approved=1 ORDER BY date ASC LIMIT 100"; 
$result = mysqli_query($conn,$query); 
$i=1; 
while($row = mysqli_fetch_assoc($result)) 
    { 
    echo $i++ ."."; 
    echo "<a href='" .$row['ID'] . "' style='text-decoration:none'> ". $row['Name'] . " </a> "; 
    echo $row['age']; 
    echo "<br>"; 
    } 
mysqli_close($conn); 

在現實中有從數據庫中獲取更多信息,並在頁面被訪問拉特說,每天99999次,將它超載的網站?我應該使用其他方法嗎? 如果200人同時查看該頁面,並且拉特說500個結果會怎麼樣?

主要問題是,如何不讓超過mysql服務器與許多訪問者在同一時間打開同一頁?

回答

1

數據的動態性如何以及它需要如何保持最新?

我要去的地方就是上述都不是問題,那麼你總是可以將結果緩存在文本文件中並顯示它,而不是打電話給服務器,這是你害怕超載的原因。

您可以使用cron作業每5分鐘更新文件,或者您認爲合適的時間間隔。

1

即使是一個簡單的網絡服務器,如果訪問者均勻分佈,每天可以執行100.000次。但是一個實際的網站會更加複雜。它可能會保存會話信息,並可能在每個頁面視圖中執行數十甚至數百個查詢。

要管理該負載,請使用專用主機而不是共享主機。您可以將查詢結果緩存在memcache中。稍後,您可以擴展服務器內存和處理能力以獲得更多緩存空間並支持更多的同時請求。然後,您在羣集中使用多個Web服務器並擁有負載平衡器。您可以將數據庫服務器與Web服務器分開,甚至可能有單獨的Memcache服務器。最後,硬件的功能是有限的,這歸結於添加更多硬件。要點是,如果這10行代碼是你現在擁有的所有東西,那麼請不要擔心。隨着您的網站和訪問者數量的增長,您還將獲得有關如何提高性能的知識。

+0

例如,如果我有'sql'數據庫中的10個表,它會超載嗎? –

+0

我工作的網站是網上商店。它平均每天處理10.000個訂單,所以頁面瀏覽次數是多種多樣的。整個事情運行在6個Web服務器和8個獨立的數據庫服務器上。但是,再一次,它有複雜的頁面,使用數百個表,並且每個頁面視圖也可以使用數百個查詢(儘管其中大部分都是內存緩存)。你不能只說10個表會使服務器超載。它不這樣工作。但是,你再也不用擔心這個問題了。過夜你不會有100.000名遊客。 – GolezTrol

+0

其實我沒有任何問題,代碼是完全不同的,我只是想知道它是否正確的方式使用查詢來顯示結果。實際上,我正在談論網站頂級列表腳本。 – EvilNabster