雖然現在已經是 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效能會好……