2011-12-02 54 views
1

我建立一個網站,其配置數據由php file舉行,變量不超過15行的配置文件中的表演。差異在PHP

一切運作良好,到目前爲止,但我現在面臨的定義更多的變量,並研究了一點,我發現一個article about Application Configuration in PHP,其結論指出php files正在分析他們是如何擴展當wost選項(需要Databases是更好的選擇)。

什麼是決定使用配置文件的格式時,最值得推薦的選擇嗎?

+0

「規模」在哪個方向?文件中有更多條目?更多需要配置的服務器? – deceze

+0

「縮放」與文件中的更多條目。 –

回答

3

對不起,什麼?!分析時,他們如何擴展(數據庫是更好的選擇)

PHP文件是wost選項。

這只是很奇怪,因爲你可以很好地擴展PHP - 只需設置另一臺服務器,就是這樣,你已經擴展了你的PHP兩次。

也請記住,有指令優化,將繼續解析文件內容在內存中。

而縮放數據庫火箭科學。擴展數據庫是一個棘手的過程,涉及良好的數據庫內部和操作系統知識。

所以我不會參考那篇文章。

PS:看了文章:

當腳本運行時,結果是平均約0.052640馬克,使這個迄今爲止最慢的方法至今。

我無法實現只是實例變量如何可以比從數據庫中讀取(其包括連接開銷,從表開銷讀取,發送數據的開銷和到底同一實例變量處理)比較慢。根據定義,X不能超過X + Y

+0

是的,我真的覺得和你一樣。這就是我選擇php文件來保存配置變量的原因。無論如何,當文章談論每種方法如何「縮放」時,它們指的是在增加變量數量時它的行爲方式,而不是在設置更多應用程序實例時。那是你的意思嗎? –

+1

我能想到的唯一原因是PHP數組最慢的方法是解析大型PHP文件和數組。爲了解決這個問題,請使用opcode cacher,以便它不需要每次都解析配置,或解析配置,序列化並在可能的情況下使用序列化版本。 – drew010

2

在我看來,如果你可以存儲在數據庫中的配置,並在內存中緩存的結果,表現應該是非常非常好。

但是,如果配置存儲在數據庫中,它需要大量的加入得到它,沒有緩存,性能可能會比使用PHP文件最差。

在另一方面,如果你存儲在返回數組中的PHP文件配置:

//config.php 
return array(
    'configitem1' => 'xyz', 
) 

//then use 
$config = require_once('config.php); 

的表現應該不會太差。顯然,每個請求都會有磁盤IO,所以如果您需要大量文件,那麼您可能會遇到一些性能問題。如果需要調用大量文件,可以將結果緩存到memcached或APC中以消除磁盤IO性能問題。

最後,您可以使用XML或YAML文件。這些將是性能最低的,因爲您需要加載和讀取文件,然後解析它。

就個人而言,我認爲將是存儲在應用程序的用戶可能需要修改它的數據庫配置。例如:

  • 換頁自定義網址。
  • 應用程序設置,例如用戶是否可以創建新帳戶
  • 標誌,例如應用程序是否處於維護模式。

總會有配置需要在文件存儲:

  • 數據庫連接參數
  • 緩存設置(即memcached的設置)。

但是,存儲在文件中的配置可以緩存在memcached或APC中,所以您的應用程序仍應該是高性能的。

所以我的2美分:

  • 使用數據庫來存儲配置,如果用戶需要能夠修改。
  • 將其他配置作爲數組存儲在PHP文件中並使用緩存。
  • 使用YAML和XML作爲最後的手段。
0

這是爲什麼文章是錯誤的:

Type First Run Second Run 
Ini File 0.000421 0.021381 
XML File 0.000717 0.
PHP File 0.000450 0.052640 
Database 0.005533 0.014184 

說「第一次運行」和「第二輪」清楚地表明,這些都不是平均結果。作者只是跑了兩次,沒有一個真正的分析器,併發布了一個毫無意義的數字。