2013-11-25 43 views
0

據我所知,我知道PHP文件不能同時服務兩個客戶端,所以在Wordpress中index.php將是處理所有請求的文件,那麼它是如何高效和快速的?有沒有邏輯集羣?或WordPress中的任何編程技術?我有一個建立在index.php上的網站,其中所有的請求都來自index.php,並且似乎它在性能上落後於較少的請求,不知道Wordpress或其他CMS如何進展順利?Wordpress如何有效服務

+0

'據我所知,我知道PHP文件不能同時服務兩個客戶端 - 真的嗎?爲什麼?你是否連接到index.php或由Apache/Nginx/[插入服務器]提供服務的命名虛擬主機,然後在線程或進程中調用一個來自線程/進程池的腳本? –

+0

@ n.b:可能我沒有很好的填充,但我已經在共享主機下的Apache服務器中測試過了,它只提供一次請求,另一個請求一直保留,直到它成爲第一個。 –

+0

確定如何提供請求並不是PHP的職責。 PHP腳本假設一切都是一個請求。服務器創建線程或進程並分發工作/並行執行它。現在,一堆線程可以共享一個資源,比如某個文件。獲得鎖的線程/進程有權對其執行某些操作,而其他線程則處於堆棧狀態,並等待鎖釋放。不知道腳本中發生了什麼(無代碼) - 那麼我們無法確定是否存在鎖定。另外,你沒有說你如何測試,也沒有說Apache配置是什麼。 –

回答

1

沒有內置的限制,如「每個文件一個客戶端」。如果您使用的服務器和/或fastCGI池,您可以自定義您的限制。根據「每個請求一個php線程」思考更準確,但即使這可能會誤導您的場景。

Wordpress的index.php只是一個路由器,它依次選擇一個主題模板並根據請求呈現它替換每個變量。這裏沒有魔法,只有基本的模板邏輯。

您的index.php滯後可能是由多種原因造成的,包括但不限於:

  • 你引用外部JS腳本在頭,這將 暫時阻止網頁渲染。
  • 您正在試圖建立早期DB連接到一個緩慢或高延遲DB服務器
  • 您對每個請求
  • 你是不是緩存是受到小或頁面的部分進行重SQL查詢無從一個請求到下一個請求的修改
  • 您正在緩存存儲器上使用基於文件的會話
  • 您沒有使用操作碼緩存而您正在爲每個請求執行昂貴的PHP計算。
  • 您有一個調整不良的網絡服務器,它爲每個請求分配了太多資源,即使是靜態資產也是如此。