2010-05-24 40 views
1

現在我有很多請求來到執行PHP CGI腳本的web服務器。PHP服務器腳本的配置文件

這些腳本中的每一個都會打開一個配置文件,我已經創建該文件來加載腳本應如何運行的選項。

每次請求進來時執行文件I/O操作對我來說似乎非常耗費資源。我不太熟悉PHP的高級功能,有沒有其他方法可以實現我在做的事情?

回答

3

看來或者你有配置文件你的應用程序,發現這包括是最壞的瓶頸?

+0

我還沒有分析我的應用程序。但直觀地看來,這可能是未來的一個問題。 – 2010-05-24 16:21:57

+0

@teehoo你的直覺已經冤枉你了。您的服務器執行數十萬次I/O操作來爲每個請求提供服務。但是你堅持只有一個 - 一個肯定已經**緩存**並從RAM中提供的文件。猜測完全沒用。幫你一個忙 - 簡介你的應用程序,或者你的每一個舉動都像盲人一樣在黑暗中 – 2010-05-24 16:25:20

+0

@teehoo上校Shrapnel是對的,即使在將來,這也不會是你的主要瓶頸。我曾經爲門戶網站工作過,每天都有數百萬次的基於PHP的點擊,其中幾十個包含每次點擊都會執行*(甚至在使用緩存時)。 – 2010-05-24 16:32:04

1

以下是一些建議給你:

  • 你可以把數據會話,它可以存儲數據爲每個用戶。

  • 或者,您可以使用工具(如memcached)在內存中緩存參數。

  • 或者,您可以將配置選項放置在PHP文件中而不是配置文件中。這樣可以簡化解析過程,並且如果您使用自動緩存已編譯的PHP腳本的eAccelerator之類的工具,也可以進行緩存。

在任何情況下,在進行優化之前,您確實應該對應用程序進行配置以確定實際的瓶頸。

+1

然而,默認會話處理程序也是文件系統上的文件 – baloo 2010-05-24 16:01:27

+0

謝謝,我沒有剖析我的應用程序,但我認爲儘可能避免執行文件I/O是常識。但是,如果會話處理程序也是基於閱讀文件,那麼或許我的方法並沒有我想象的那麼糟糕。 – 2010-05-24 16:23:07

0

Col.Shrapnel是對的。單個文件訪問並不是很昂貴。請記住,您的應用程序由每個.php腳本組成。

如果您的配置文件採用parse_ini_file()格式,請不要擔心。解析它甚至比PHP腳本更快。但是,如果您正在使用操作碼緩存,則可以將配置腳本轉換爲PHP數組/腳本。這樣,磁盤I/O變得冗餘,因爲你的操作碼高速緩存將Zend字節碼保存在內存中。