php的fastcgi
1. 關於FastCGI、php-cgi、php-fpm的區別是什麼,各自有什麼用途,以及相互間的關系是什麼
fastcgi是一個通用網關介面,用於web伺服器(iis, apache)和應用程序通信。
php-cgi是php平台的cgi程序
以上兩個結合,可以使php整合在web服務中
php-fpm是一個獨立的php-fcgi管理軟體,它要整合進web服務中,需要使用代理模式
一般與nginx搭配。也可以與apache搭配
php-fpm一般不直接作為服務容器提供外網訪問,而是通過常用web容器作代理
php作為伺服器端的解析程序,運行模式分很多種,fastcgi, mod_php, proxy(代理)等。
與iis搭配時一般採用fast-cgi模式,iis自帶fast-cgi引擎,配置好php參數即可
與apache搭配,在windows平台下,一般也是fast-cgi模式,在linux系統中一般是mod_php模式,把php作為一個子模塊載入
也可以配置php-fpm 然後在apache中配置代理模式
與nginx搭配,一般就是用php-fpm+代理模式了
2. PHP語言的八大優勢
PHP(Hypertext),超文本預處理器,是一種通用性開源腳本語言。它的語法吸取了C語言、Java和Perl的優點,免費、快捷、高效,主要適用於Web開發領域。
目前,全球5000萬互聯網網站60%以上都在使用PHP技術,AlexaTOP500中國網站排名中有394家使用PHP,國內80%以上動態網站使用PHP進行開發,在Web後端語言中PHP全球市場語言佔有率達到80%。
像Facebook、Google、新浪、網路、YouTube、騰訊都在使用PHP。
PHP語言的八大優勢:
1、開放源代碼,所有的PHP源代碼事實上都可以得到。
2、免費性,php和其它技術相比,PHP本身免費且是開源代碼。
3、快捷性,程序開發快,運行快,技術本身學習快。嵌入於HTML:因為PHP可以被嵌入於HTML語言,它相對於其他語悉腔答言。編輯簡單,實用性強,更適合初學者。
4、跨平台性強,由於PHP是運行在伺服器端的腳本,可以運行在UNIX、LINUX、WINDOWS、MacOS下。
5、專業專注,PHP支持腳本語言為主,同為類C語言。
6、效率高PHP消耗相當少的系統資源。
7、面向對象,在php4,php5中,面向對象方面都有了很大的改進,php完全可以用來開發大型商業程序。睜慧
8、圖像處理,用PHP動態創建圖像,PHP圖像處理默認使用GD2。且也可以配置為使用magick進行圖像處理。
PHP的3種常用運行方式:CGI、FastCGI、。
1、CGI
CGI即通用網關介面(commongatewaginterface),它是一段程序,通俗的講CGI就像是一座橋,把網頁和WEB伺服器中的執行程序連接起來,它把HTML接收的指令傳遞給伺服器的執行程序,再把伺服器執行程序的結果返還給HTML頁。CGI的跨平台性能極佳,幾乎可以在任何操作系統上實現。
2、FastCGI
fast-cgi是cgi的升級版本,FastCGI像是一個常駐(long-live)型的CGI,它可以一直執行著,只要激活後,不會每次都要花費時間去fork一次。PHP使用PHP-FPM(FastCGIProcessManager),全稱PHPFastCGI進程管理器進行管理。
但每一個Web請求PHP都必須重新解析php.ini、重新載入全部擴展並重初始化全部數據結構。使用FastCGI,所有這些都只在進程啟動時發生一次。一個額外的好處是,持續資料庫連接(Persistentdatabaseconnection)可以工作。
3、
PHP作為Apache模塊,Apache伺服器在系統啟動後,預先生成多個進程副本駐留在內存中,一旦有請求出現,就立即使用這些空餘的子進程進行處理,這樣就不存在生成子進程造成的延遲了。這些伺服器副本在處理完一次HTTP請求之後並不立即退出,而是停留在計算機中等待下次請求。對於客戶瀏覽器的請求反應更快,性能較高。
如何保護自己的PHP代碼:
1、代碼混淆加密
就是把代碼base64加密,然後對base64里的字元串進行字元串映射(隨機生成字典混淆)然後eval執行這種百分之百能被破解還原。
2、混淆亂碼字元
代碼混淆變數還有一些東西和1原理差不多,不過是把字元串換到ascii127到255之間非人類還有編輯器看不懂的字元,結果也是百分之百能被破解和還原,只是時間問題。
3、發放opcode
不分發代碼,而是先把PHP代碼預編譯,分發opcode,PHP7以後opcache深度集成這個東西PHP7以後可以用這個方法保護源碼,但是也會被opcode反編譯回去也會被破解。
4、混淆加密寫PHP擴展
混淆加密寫PHP擴展,但是只要是開源的PHP擴展都會被破解,除非自己寫加密演算法,把PHP代碼加密,然後自己拿C語音寫擴圓談展閉源,別人不知道你加密思路和破解思路,被破解的可能性很小。
3. win7系統 我在配置iis+php環境的時候在田間模塊映射的時候發現找不到FastCgiMole模塊。,怎麼解決。謝謝
原因:設置錯誤造成的。解決方法:嘗試添加新功能配置來解決此問題。
如下參考:
1.第一個右鍵點擊開始菜單,點擊管理工旅明具,找到伺服器管理器點擊打開,如下圖。
4. cgi、fastcgi、php-cgi、php-fpm異同
1. cgi
- 通用網關介面,就是外部應用程序(cgi程序)與web伺服器之間的介面標准。
- nginx是內容分發者,如果是請求index.php,根據配置文件內容得知不是靜態文件,就會去找對應的cgi程序進行解析
- cgi就是規定要傳那些數據,以什麼格式傳遞給後方進行處理的協議
- cgi工作模式,一個請求發送過來,啟動cgi解釋器(創建進程)-> 邏輯處理 -> 退出 (fork and exec 模式) 每次都需要重新創建進程,載入配置,浪費系統資源
2. fastcgi
- 快速通用網關介面,常駐型的cgi,不用每次都fork進程,其會使cgi解解釋器進程常駐內存,所以性能較高
- master-worker模型,伺服器啟動時載入fastcgi進程管理器
- fastcgi會進行自身初始化,初始化時會創建多個進程
- 請求到達web伺服器後,fastcgi進程管理器會選擇並通過socket連接到一個cgi解釋器
3. php-cgi
- php自帶的cgi管理器
- php-cgi的缺點,不能平滑重啟,需要重啟php-cgi才能使php.ini生效
4. php-fpm
- php-fpm是php的一種fastcgi的實現,管理php的fastcgi進程池
- 能夠調度php-cgi程序
- 能夠實現平滑重啟
- php-fpm創建一個master進程,然後創建進程池,監聽socket,fork出多個子進程,子進程各自accept請求,php-fpm的子進程同時只能響應一個請求,處理完一個請求才可以accept下一個請求,多進程,同步阻塞模型
- master和worker進程之間不直接進行通信,master通過共享內存獲取worker進程信息,master進程發送信號通知worker進程
- php-fpm可以同時監聽多個埠,每個埠對應一個worker pool
- worker是cgi程序,php-fpm是fastcgi協議的php是實現
5. php中fastcgi和php-fpm是什麼東西
首先要明白CGI是一個協議,方便程序員開發程序的,
而fastcgi是cgi的一個改良版,優化了CGI的性能,
php-fpm是實現了fastcgi的一個程序(當然,被官方收錄了).
而php-fpm是php的一種工作模式。以服務的形式接收伺服器傳來的php文件,處理返回。
php一般還會以apache模塊的形式工作.