<?xml version="1.0" encoding="UTF-8" ?><oembed><version>1.0</version><provider_name>Jui-Nan Lin&#039;s Blog</provider_name><provider_url>https://jnlin.org</provider_url><author_name>jnlin</author_name><author_url>https://jnlin.org/author/jnlin/</author_url><title>改善 Apache + PHP 效能的一些想法&hellip;</title><html>&lt;p&gt;雖然現在已經是 Rails 或是 Python 的時代了（以上兩個語言隨便都可以跑出 1000 req/s 的成績，反觀 PHP 在 production 最多也才 200 req/s）。不過 PHP 畢竟還是一個大量應用在 Web 環境的語言，尤其是 Wordpress 也還是用 PHP……&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;使用 fastcgi mode + Apache Worker 或是 Thread MPM     &lt;br /&gt;PHP 本身雖然是 Thread safe 的，但是PHP的 Module 很多不是（如 mysql module），所以如果要用 Apache PHP Module的話，只能用 prefork MPM。而 prefork 一隻 httpd 動輒 200MB，有時候還高達 2GB，造成效能不彰。另外一個重點是 fastcgi 會自己重跑，可以避免 memory leak 問題。&lt;/li&gt;    &lt;li&gt;上 OP Code Cache     &lt;br /&gt;例如 &lt;a href=&quot;http://php.net/manual/en/book.apc.php&quot;&gt;APC&lt;/a&gt; 之類的OP Code Cache可以避免每次執行的時候，PHP都去 compile 一次原始程式碼。&lt;/li&gt;    &lt;li&gt;避免大量的 require、include，或是把需要 require 與 include 的檔案都放在同一個目錄下     &lt;br /&gt;因為 realpath() 很吃資源…也可以&lt;a href=&quot;http://tw.php.net/ini.core#ini.sect.performance&quot;&gt;考慮加大 realpath cache&lt;/a&gt;。&lt;/li&gt;    &lt;li&gt;Cache     &lt;br /&gt;考慮把資料庫輸出 cache，或甚至 cache 整個 HTML。&lt;/li&gt;    &lt;li&gt;把 static file 與動態 file 分開     &lt;br /&gt;講到爛的東西了。&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;另外PHP是個不適合OO的語言，不要期待使用OO的PHP效能會好……&lt;/p&gt;</html><type>rich</type></oembed>