Zend Framework 的一些設定上的想法

開始使用 Zend Framework 後,一些設定上的想法。

首先是 Zend Framework 的引入設定,有些文章會建議放到 php.ini 裡,在 include_path 引入,但我認為比較好的方式是在 index.php 裡引入:

set_include_path(get_include_path() . ':' . dirname(__FILE__) . '/../weblib/ZendFramework-1.5.0PR/library');

如果大家都共用系統的 library,那麼在升級時很有可能會中獎。至於這個指令對於系統效率的部份,我覺得這個東西差不了多少,不需要對此計較,先把時間花在其他地方比較好。

再來是 .htaccess 的部份,Zend 的文件上建議把 css/js 之類的靜態圖檔設定到 Regular Expression 裡分開,我的建議是全部都丟給 index.php,然後靜態圖檔用另外一個 domain 放:

#
RewriteEngine On
RewriteBase /~gslin/zendtest
RewriteRule .* index.php [L]

原因是一開始先稍微規劃,先用一台機器跑 VirtualHost 服務兩個 domain,之後長大了才容易拆開。當靜態圖檔的量大到會影響動態的部份時,抽出來用 lighttpd 吐。

然後,既然都用了 Framework 這種東西,APC 之類的 opcode accelerator 一定要裝,不然速度會很慢。另外 APC 預設 30MB 的 cache 可能會不夠用,調大一點會比較好。

Apache 一定要用 FastCGIPHP 抽出來跑,不要用 mod_php5 的模式跑。這樣 Apache 就可以用 event 或是其他 threading MPM 執行,對於效率會有很大的改善,我在去年年底有寫過:Apache 2.2 的 MPM Event

基本上效率不要太斤斤計較,因為很有機會一個 SQL slow query 的改善,就可以大幅度改善整體的效率。現在一台看起來還算暴力的 x86-64 1U 伺服器不用 100k 就有一台 (雙四核心 Xeon 加上 12GB RAM 與 SCSI*2),把人力時間花在開發上面比較實際...

4 thoughts on “Zend Framework 的一些設定上的想法”

  1. FastCGI + PHP?

    這樣 PHP 該不會是跑 CLI mode 吧?
    如果是 CLI mode, 那麼 APC 的 shared memory 將不會共用,
    mysql_pconnect() 也不會共用...
    這樣一來反而犧牲掉不少東西, 效能會比較好??

Leave a Reply

Your email address will not be published. Required fields are marked *