一般情況下,在apache 下要用 php程式是透過mod_php模組來運作
而mod_php對我來說明顯的缺點有
1。程式上傳的檔案權限會是 apache:apache
2。再來就是效能小差吧!!
3。apache 執行程序都是apache 這個使用者
而 cgi = common gateway interface ,是與 web 伺服器溝通的一個介面
不過本身cgi也有缺點,所以apache 有個 Server API 這東西,與它結合的應用程式可以有較高的效率
fastcgi 的產生也是為了有再高的效率
fastcgi 它的好處是
1。一個程序可以重複處理好幾個需求
2。更高的效能
3。其它
先來區分清楚 mod_fastcgi 與 mod_fcgid 是不同的
mod_fcgid 是這個 http://httpd.apache.org/mod_fcgid/ (apache 自家開發的)
mod_fastcgi 是這個 http://www.fastcgi.com/
目前只玩過 mod_fcgid
1。程序在跑時是使用 User呈現
2。檔案的上傳也是User
3。這對如果是有很多virtual host 時,是個很讚的功能
4。比方說主機負載高時可以在top上馬上看到誰的CPU最高
5。php程式上傳時就是User,不再對是不是apache還要把它改成User,或是權限要改成 777 等之類的
mod_fastcgi 則對它還不熟
只知道
1。它可以再搭配 php-fpm (http://php-fpm.org/) 有更好的管理效能
2。對於有高負載需求的
3。再搭配 apache 用 worker 模式 (多行程、多執行緒運作),就比較讚,(/etc/sysconfig/httpd 取消註解HTTPD=/usr/sbin/httpd.worker)
4。可以使用 Unix Socket 、 TCP 與 web server 連接
比較一下 prefork 與 worker
這兩個都是apache 的 MPM (Multi-Processing Module),讓apache 多重處理器的方式來處理request
prefork
1。pre-forking (預載分流)
worker
1。Multi-thread (多重執行緒)
2。適合在多核心的CPU
http://www.pigo.idv.tw/archives/827
http://home.educities.edu.tw/shirock/comp/fastcgi.htm
http://www.arthurtoday.com/2009/11/apache-mpm-worker-prefork.html
留言