0
我有一個工作的實時搜索系統,整體工作得很好。但是,如果用戶輸入的速度快於返回結果,則它經常會遇到服務器上許多版本的搜索查詢同時運行的問題。防止多個同時查詢與PHP/MySQL的實時搜索
我正在中止對新版本的receoipt的ajax請求,但這當然不會影響已在服務器上進行的查詢,並且最終會遇到嚴重的瓶頸和很長的等待以獲得最終結果。我爲MyISAM表使用了MySQL,並且在轉換到InnoDB時似乎沒有任何優勢,因爲結果集將是理智的行。
我嘗試使用會話變量讓PHP等待,如果這個會話已經有一個查詢進行中,但似乎阻止它完全工作。
如果我使ajax請求syncrhonous,但它寧可擊敗對象在這裏,問題解決。
我想知道如果任何人有任何建議,如何使這項工作正常。
問候 約翰
這是您正在尋找的答案。設置一個簡單的計時器,在達到1秒後執行您的請求。然後讓每個按鍵按下計時器重置,這樣只會在閒置x秒後纔會觸發。 – Sarah
我猜用戶需要在發送ajax請求之前按「enter」鍵。 – ace
@ace這並不總是可取的。想象一下,CRM類型的應用程序可以自動完成特定形式的公司名稱,並且希望在數據輸入過程中儘早回覆,而無需用戶執行特殊操作(如按「輸入」)。不過,您不希望它在每次按鍵之後都發出新的請求。 –