mod fastcgi和mod fcgid的區別

2022-04-03 15:55:38 字數 1553 閱讀 6475

mod_fcgid是乙個跟mod_fastcgi二進位制相容的apache module。

原 來的mod_fastcgi因為實現方式的限制,所以可能會建立了很多不必要的程序,而實際上只需要更少的程序就能處理同樣的請求。 mod_fastcgi的另外乙個問題是每乙個cgi的多個程序都共享同乙個管道檔案,所有到同乙個fastcgi的通訊都通過這個同名的管道檔案進行, 這樣當出現通訊錯誤的時候,根本不知道正在通訊的是哪乙個fastcgi,於是也沒有辦法將這個有問題的程序殺死。

mod_fcgid嘗 試使用共享記憶體來解決這個問題。共享記憶體裡面有當前每個fastcgi程序的資訊(包括程序號,程序使用的管道檔名等),當 每次嘗試請求fastcgi工作的時候,apache將會首先在共享記憶體裡面查詢,只有在共享記憶體裡面發現確實沒有足夠的fastcgi程序了,才會建立 新的程序,這樣可以保證當前建立的程序數量剛好能夠處理客戶的請求。另外,由於每乙個fastcgi程序使用不同名稱的管道檔案,所以可以在通訊失敗的時 候知道到底哪個fastcgi程序有問題,而能夠盡早的將其剔除。

程式實現的目標

跟mod_fastcgi二進位制相容

只要在apache中用mod_fcgid替換了mod_fastcgi,就能工作。原來的fastcgi程式不用重新編譯,立即可以工作。

更嚴格的控制程序的建立

apache中每乙個request handler都能通過共享記憶體知道當前系統fastcgi執行的情況,這樣可以防止過度的建立fastcgi程序,無謂的消耗系統的資源。

簡單清晰的程序建立速度控制策略

每乙個fastcgi都會維護乙個計數器,這個計數器在程式建立和程式結束的時候都會增加,而這個計數器每秒會減1,直到0。當計數器的值高於某個

閥值的時候,程式就會停止建立,直到計數器的值回落。這樣既可以保證在請求突然增多的時候能夠快速反應(特別是apache剛啟動,需要大量建立程式的時

候),也能保證當fastcgi程式有問題,不斷重起的時候,重起的速度不會過高而消耗過多的系統資源。

自動檢測出有問題的程序

因為每個fastcgi使用自己特定的管道檔案,所以在通訊錯誤的時候可以輕易知道哪乙個程式出現問題,而盡早的將其剔除。

可移植性

遵照apache2的習慣,所有可移植的**都放到一起,所有不可移植的**都在arch目錄下分開存放。當前已經測試過的系統包括 linux ,

freebsd(已經包含入freebsd4和freebsd5的port中), solaris, windows 2000.

支援fastcgi方式執行的php

可以直接支援以fastcgi方式執行的php。因為php現在還不能保證所有的擴充套件**都是執行緒安全的,所以並不建議在apache2的執行緒模式

下使用mod_php。而以fastcgi方式執行的php則是其中乙個解決辦法。另外,使用mod_fcgi還可以在不修改任何php**的情況下,獲

得資料庫連線池的功能,大大減少php程序到資料庫的連線。

mod fastcgi和mod fcgid的區別

mod fcgid是乙個跟mod fastcgi二進位制相容的apache module。原 來的mod fastcgi因為實現方式的限制,所以可能會建立了很多不必要的程序,而實際上只需要更少的程序就能處理同樣的請求。mod fastcgi的另外乙個問題是每乙個cgi的多個程序都共享同乙個管道檔案,...

mod fastcgi和mod fcgid的區別

mod fcgid是乙個跟mod fastcgi二進位制相容的apache module。原 來的mod fastcgi因為實現方式的限制,所以可能會建立了很多不必要的程序,而實際上只需要更少的程序就能處理同樣的請求。mod fastcgi的另外乙個問題是每乙個cgi的多個程序都共享同乙個管道檔案,...

fmod 函式和modf 函式

標頭檔案 includec庫函式 fmod 用來對浮點數進行取模 求餘 原型為 float fmod float x 設x k n h,則返回值為h h和x的符號相同 fmod 與求模運算子 的比較 1 只用於整型的計算,後乙個數不能為0 fmod 可以對浮點型資料進行取模運算,後乙個數可以為0,返...