雖然現在已經是 Rails 或是 Python 的時代了(以上兩個語言隨便都可以跑出 1000 req/s 的成績,反觀 PHP 在 production 最多也才 200 req/s)。不過 PHP 畢竟還是一個大量應用在 Web 環境的語言,尤其是 WordPress 也還是用 PHP……
- 使用 fastcgi mode + Apache Worker 或是 Thread MPM
PHP 本身雖然是 Thread safe 的,但是PHP的 Module 很多不是(如 mysql module),所以如果要用 Apache PHP Module的話,只能用 prefork MPM。而 prefork 一隻 httpd 動輒 200MB,有時候還高達 2GB,造成效能不彰。另外一個重點是 fastcgi 會自己重跑,可以避免 memory leak 問題。 - 上 OP Code Cache
例如 APC 之類的OP Code Cache可以避免每次執行的時候,PHP都去 compile 一次原始程式碼。 - 避免大量的 require、include,或是把需要 require 與 include 的檔案都放在同一個目錄下
因為 realpath() 很吃資源…也可以考慮加大 realpath cache。 - Cache
考慮把資料庫輸出 cache,或甚至 cache 整個 HTML。 - 把 static file 與動態 file 分開
講到爛的東西了。
另外PHP是個不適合OO的語言,不要期待使用OO的PHP效能會好……
jnlin 有沒有空幫忙調 MozTW 的機器? fastcgi 在 Ubuntu 上面我從來沒有搞定過 orz
啊!!!同樣的Business Logic,PHP的效能與Python的效能差別有這麼大哦?
程式的瓶頸應該通常不太會是選用的語言上。因為做Web Project大多不是什麼CPU密集的計算。
順便問一下,Pthon做Web,請問你們是用什麼framework嗎??
PHP 的 Code Quality (指 interpreter 的部份) 寫得很糟是眾所周知的事情,要不然 Facebook 也不需要自己推出 Hiphop 了。
Python 的話我們是用 web.py。