2013-06-01 71 views
0

我正在嘗試第一次長時間輪詢。長查詢PHP。保持數據庫連接與否?

在PHP腳本中,我有一個帶睡眠定時器的while循環,它將腳本凍結10秒,然後再次在數據庫中查找新的東西。

我想性能和服務器/數據庫加載/連接:

什麼是服務器更糟糕:許多GET-請求(AJAX),或數據庫連接的許多打開/關閉?

以任何方式使用長輪詢,但在每一輪while循環中關閉並重新打開DB連接(釋放有限數量的連接)會更好嗎?

回答

0

這聽起來不是那麼簡單:從一個簡單的「我應該或不願意」選擇開始,隨着擴展到更多的服務器,其複雜性會迅速增加。

曾觸及牆壁兩種方法,我們已經想出了一個代理方案,似乎就連工作也便宜共享主機:

  • 運行一個簡單的代理腳本的一個實例,即輪詢DB(在共享主機上,我們從cron作業開始,只啓動一個實例,如果沒有其他程序正在運行,所以我們很容易在重新啓動後保留)
  • 讓代理腳本將昂貴的DB輪詢轉換爲更便宜的輪詢:SysV SHM和文件系統中的標誌文件都可以正常工作。代理應該保持其單個數據庫連接打開
  • 您可能有許多長輪詢器檢查代理標誌。

這使得在併發輪詢增加時,可以實現一個簡短的服務器端輪詢intervall而不會遇到問題。