2014-05-09 66 views
1

這可能是一個簡單的錯誤,但我難倒...選擇查詢更新緩慢

我有了一個Chrome擴展,它的偉大工程,並立即將分別使用AJAX插入條目的數據庫。

我有一個單獨的PHP文件,用於輸出表中的條目數。這是有效的,但是當被調用時,條目需要很長時間才能更新到正確的數字。我需要它立即更新。

是否有任何理由說,當表本身立即更新時,查詢輸出正確的數字需要很長時間?

<?php 
$link = mysqli_connect("localhost", "root", "", "fyp"); 

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 
if ($result = mysqli_query($link, "SELECT * FROM links")) { 

    $row_cnt = mysqli_num_rows($result); 

    printf($row_cnt); 

    mysqli_free_result($result); 
} 

/* close connection */ 
mysqli_close($link); 
?> 

謝謝。

回答

0

我想你應該簡單的運行:

if ($result = mysqli_query($link, "SELECT count(*) AS `nr` FROM links")) { 

    $row_cnt = mysqli_fetch_assoc($result); 

    printf($row_cnt['nr']); 

    mysqli_free_result($result); 
} 

這將是最好的之一。或者,如果你的鏈接並不刪除,你可以運行:

if ($result = mysqli_query($link, "SELECT id FROM links ORDER BY id DESC LIMIT 1")) { 

    $row_cnt = mysqli_fetch_assoc($result); 

    printf($row_cnt['id']); 

    mysqli_free_result($result); 
} 
+0

雖然這是一個更好的解決方案,它仍然需要很長時間來更新。雖然它在phpymadmin中更新。 有沒有我失蹤的東西?有時需要2-3分鐘更新,如果是瞬間的? – user1157

+0

在這種情況下,您應該在您的phpmyadmin:show processlist中運行;檢查你的數據庫中發生了什麼 –

0

手從處理到數據庫中通過使用聚合查詢和返回與mysqli_result標結果:

if ($result = mysqli_query($link, "SELECT COUNT(1) FROM links")) { 
    $row_cnt = mysqli_result($result, 0); 
    printf($row_cnt); 
    mysqli_free_result($result); 
} 
+0

我已經嘗試了以上,雖然兩者都是更好的解決方案,但與數據庫本身相比,輸出仍然存在相當大的延遲。 刷新時更新號碼有時需要2-3分鐘。 在本地主機上,它立即更新,但是當被引入我自己的網站時,更新需要更長的時間。 – user1157

+0

因此,MySQL數據庫位於您運行PHP的不同服務器上?如果是這樣,我建議調查服務器之間的延遲。如果沒有,請嘗試使用MySQL性能工具來確定延遲的原因。否則可能只是缺乏服務器上的可用資源。 –

+0

我相信服務器上缺少可用的資源,因爲數據庫與PHP在同一臺服務器上。我會嘗試一種不同的方法,謝謝。 – user1157