2013-10-29 97 views
-1

我想從我的數據庫中獲取信息並顯示它。下面是頁面的樣子截圖:如何優化和提高此MySQL查詢的速度?

Screenshot of grid

該頁面加載很慢

有沒有什麼辦法讓它加載和顯示速度更快的數據?

這是代碼。

<table align="center" class="pTable"> 
<tr class="main"> <th class="pTableHeader"> ID </th> <th class="pTableHeader"> Room </th> <th class="pTableHeader"> Status</th> </tr> 
<?php 
gc_enable(); 
gc_collect_cycles(); 
flush(); 
$this->mysql = new sqli('HIDDEN','HIDDEN','HIDDEN','HIDDEN'); 
$bots = $this->mysql->fetch_array("SELECT `pid`,`room`,`id` from `bots`;"); 
foreach ($bots as $b) { 
if(is_numeric($b["room"])) { 
$xat = file_get_contents('http://www.xat.com/xat'.trim($b["room"])); 
$name = sp($xat, '<h1>&nbsp;', '</h1>'); 
} 
else $name = $b['room']; 
//$b["pid"] = isset($b["pid"])?$b["pid"]:false; 
//$online = \"start.php {$b['id']} {$b['id']}\"", $output) && count($output) > 1 ? true : false; 
$online = file_exists("/proc/{$b['pid']}")?true:false; 
if($online === true) $status = "<font color='green'>Online</font>&nbsp;<div style='float:right'><img src='http://fexbots.com/Images/Pawns/online.png'>&nbsp;<a href='/botinfo?botid={$b["id"]}'>More info</a></div>"; 
else $status = "<font color='red'>Offline</font>&nbsp;<div style='float:right'><img src='http://fexbots.com/Images/Pawns/offline.png'>&nbsp;<a href='/botinfo?botid={$b["id"]}'>More info</a></div>"; 
if($b["room"] === '') { 
$name = "No Room"; 
$status = "<font color='red'>Not Setup!</font>&nbsp;&nbsp;<div style='float:right'><img src='http://fexbots.com/Images/Pawns/hang.png'>&nbsp;<a href='/botinfo?botid={$b["id"]}'>More info</a></div>"; 
echo '<tr> <td> '.$b["id"].' </td> <td> No Room <td> '.$status.'</td> </tr>'; 
} 
else echo "<tr> <td> ".$b['id']." </td> <td> <a href='http://www.xat.com/$name'>$name</a> <td> ".$status."</td> </tr>"; 
} 
function sp($content, $start, $end, $lower=false) { 
if($lower!=false) { 
$content = strtolower($content); 
$start = strtolower($start); 
$end  = strtolower($end); 
} 
$content = substr($content, strpos($content,$start)+strlen($start)); 
$content = substr($content, 0, strpos($content,$end)); 
return $content; 
} 
?> 
</table> 
+0

你確定這是阻礙性能的查詢嗎? – geomagas

+1

請縮進並設置你的代碼的格式,因爲人們會有20倍的動力來幫助你。 – MonkeyZeus

+0

如果我不得不作出反應,那麼'$ xat = file_get_contents('http://www.xat.com/xat'.trim($ b [「room」]));'是減速 – MonkeyZeus

回答

1

您似乎從循環內的URL下載內容。也許這是爲什麼它慢,而不是MySQL查詢本身的原因。

嘗試寫出一些時間戳或評論一些代碼,看看是什麼導致它慢。

+0

是的,它是file_get_contents,我測試了它。我如何解決它?我需要下載,它也給了20:53:4120:53:4320:53:4320:53:4320:53:4320:53:4420:53:4420:53:4520:53的時間延遲:4520:53:4520:53:4520:53:46 – user2791849

+0

如果您必須獲取該數據,則很難降低加載時​​間。但是,如果您使用Ajax加載它,則可以爲訪問者提供更好的用戶體驗。然後,頁面將加載得更快,並且可以更快地被用戶看到 - 當完成後,您可以使用Ajax開始加載每行的狀態。您可能必須創建一個新的PHP頁面,並將$ b [「room」]作爲參數,然後在單獨的頁面中執行file_get_contents。 – becquerel