導航:首頁 > 編程語言 > phpfpmcgi

phpfpmcgi

發布時間:2022-08-21 01:19:52

php-cgi是哪裡來的,怎麼我的linux沒有,我已經安裝了php了

linux中一般通過php-fpm管理php進程,有php-fpm來接受請求並處理
php-fpm在裝完php就自帶了
可以在php-fpm.conf中配置相關參數,如監聽埠、線程數等

❷ php-fpm 找不到 php-cgi.sock 怎麼辦

php-fpm有兩種listen方式,一種是通過埠來操作,一種是sock文件。
在nginx的server配置當中,如果設置為fastcgi_pass unix:/tmp/php-cgi.sock的話,有可能會出現502錯誤,這是以為nginx此項沒有找到php-cgi.sock文件或者許可權問題導致的,我們也可以改成fastcgi_pass:127.0.0.1:9000來修正這個錯誤 。
當我們用php-fpm來管理我們的php啟動時,按照如下的配置,就會自動生成/tmp/php-cgi.sock文件,然後再訪問的話就不回出現502 Gateway錯誤了。配置如下:
[global]
pid = /var/run/php-fpm.pid
error_log = /var/log/php-fpm.log
log_level = notice
[www]
listen = /tmp/php-cgi.sock
user = www
group = www
pm = dynamic
pm.max_children = 20
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
註:將php.ini里的cgi.fix_pathinfo設置為0,不然會有漏洞~ 你看過後很簡單吧以後不會可以向我一樣經常到後盾人找找相關教材看看就會了,希望能幫到你,給個採納吧謝謝

❸ 關於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+代理模式了

❹ php-fpm與php什麼關系

首先,CGI是幹嘛的?CGI是為了保證web server傳遞過來的數據是標准格式的,方便CGI程序的編寫者
web server(比如說nginx)只是內容的分發者。比如,如果請求/index.html,那麼web server會去文件系統中找到這個文件,發送給瀏覽器,這里分發的是靜態數據。好了,如果現在請求的是/index.php,根據配置文件,nginx知道這個不是靜態文件,需要去找PHP解析器來處理,那麼他會把這個請求簡單處理後交給PHP解析器。Nginx會傳哪些數據給PHP解析器呢?url要有吧,查詢字元串也得有吧,POST數據也要有,HTTP header不能少吧,好的,CGI就是規定要傳哪些數據、以什麼樣的格式傳遞給後方處理這個請求的協議。仔細想想,你在PHP代碼中使用的用戶從哪裡來的。
當web server收到/index.php這個請求後,會啟動對應的CGI程序,這里就是PHP的解析器。接下來PHP解析器會解析php.ini文件,初始化執行環境,然後處理請求,再以規定CGI規定的格式返回處理後的結果,退出進程。web server再把結果返回給瀏覽器。
好了,CGI是個協議,跟進程什麼的沒關系。那fastcgi又是什麼呢?Fastcgi是用來提高CGI程序性能的。
提高性能,那麼CGI程序的性能問題在哪呢?"PHP解析器會解析php.ini文件,初始化執行環境",就是這里了。標準的CGI對每個請求都會執行這些步驟(不閑累啊!啟動進程很累的說!),所以處理每個時間的時間會比較長。這明顯不合理嘛!那麼Fastcgi是怎麼做的呢?首先,Fastcgi會先啟一個master,解析配置文件,初始化執行環境,然後再啟動多個worker。當請求過來時,master會傳遞給一個worker,然後立即可以接受下一個請求。這樣就避免了重復的勞動,效率自然是高。而且當worker不夠用時,master可以根據配置預先啟動幾個worker等著;當然空閑worker太多時,也會停掉一些,這樣就提高了性能,也節約了資源。這就是fastcgi的對進程的管理。
那PHP-FPM又是什麼呢?是一個實現了Fastcgi的程序,被PHP官方收了。
大家都知道,PHP的解釋器是php-cgi。php-cgi只是個CGI程序,他自己本身只能解析請求,返回結果,不會進程管理(皇上,臣妾真的做不到啊!)所以就出現了一些能夠調度php-cgi進程的程序,比如說由lighthttpd分離出來的spawn-fcgi。好了PHP-FPM也是這么個東東,在長時間的發展後,逐漸得到了大家的認可(要知道,前幾年大家可是抱怨PHP-FPM穩定性太差的),也越來越流行。
網上有的說,fastcgi是一個協議,php-fpm實現了這個協議有的說,php-fpm是fastcgi進程的管理器,用來管理fastcgi進程的,對。php-fpm的管理對象是php-cgi。但不能說php-fpm是fastcgi進程的管理器,因為前面說了fastcgi是個協議,似乎沒有這么個進程存在,就算存在php-fpm也管理不了他(至少目前是)。 有的說,php-fpm是php內核的一個補丁
以前是對的。因為最開始的時候php-fpm沒有包含在PHP內核裡面,要使用這個功能,需要找到與源碼版本相同的php-fpm對內核打補丁,然後再編譯。後來PHP內核集成了PHP-FPM之後就方便多了,使用--enalbe-fpm這個編譯參數即可。
有的說,修改了php.ini配置文件後,沒辦法平滑重啟,所以就誕生了php-fpm,是的,修改php.ini之後,php-cgi進程的確是沒辦法平滑重啟的。php-fpm對此的處理機制是新的worker用新的配置,已經存在的worker處理完手上的活就可以歇著了,通過這種機制來平滑過度。
還有的說PHP-CGI是PHP自帶的FastCGI管理器,那這樣的話干嗎又弄個php-fpm出
不對。php-cgi只是解釋PHP腳本的程序而已。

❺ php5-cgi和php5-fpm 這兩個東西是什麼意思啊有什麼區別怎麼使用

CGI

CGI全稱是「公共網關介面」(Common Gateway Interface),HTTP伺服器與你的或其它機器上的程序進行「交談」的一種工具,其程序須運行在網路伺服器上。

CGI可以用任何一種語言編寫,只要這種語言具有標准輸入、輸出和環境變數。如php,perl,tcl等。

FastCGI

FastCGI像是一個常駐(long-live)型的CGI,它可以一直執行著,只要激活後,不會每次都要花費時間去fork一次(這是CGI最為人詬病的fork-and-execute 模式)。它還支持分布式的運算,即 FastCGI 程序可以在網站伺服器以外的主機上執行並且接受來自其它網站伺服器來的請求。

FastCGI是語言無關的、可伸縮架構的CGI開放擴展,其主要行為是將CGI解釋器進程保持在內存中並因此獲得較高的性能。眾所周知,CGI解釋器的反復載入是CGI性能低下的主要原因,如果CGI解釋器保持在內存中並接受FastCGI進程管理器調度,則可以提供良好的性能、伸縮性、Fail- Over特性等等。

FastCGI特點

FastCGI具有語言無關性.
FastCGI在進程中的應用程序,獨立於核心web伺服器運行,提供了一個比API更安全的環境。APIs把應用程序的代碼與核心的web伺服器鏈接在一起,這意味著在一個錯誤的API的應用程序可能會損壞其他應用程序或核心伺服器。 惡意的API的應用程序代碼甚至可以竊取另一個應用程序或核心伺服器的密鑰。
FastCGI技術目前支持語言有:C/C++、Java、Perl、Tcl、Python、SmallTalk、Ruby等。相關模塊在Apache, ISS, Lighttpd等流行的伺服器上也是可用的。
FastCGI的不依賴於任何Web伺服器的內部架構,因此即使伺服器技術的變化, FastCGI依然穩定不變。
FastCGI的工作原理

Web Server啟動時載入FastCGI進程管理器(IIS ISAPI或Apache Mole)
FastCGI進程管理器自身初始化,啟動多個CGI解釋器進程(可見多個php-cgi)並等待來自Web Server的連接。
當客戶端請求到達Web Server時,FastCGI進程管理器選擇並連接到一個CGI解釋器。Web server將CGI環境變數和標准輸入發送到FastCGI子進程php-cgi。
FastCGI子進程完成處理後將標准輸出和錯誤信息從同一連接返回Web Server。當FastCGI子進程關閉連接時,請求便告處理完成。FastCGI子進程接著等待並處理來自FastCGI進程管理器(運行在Web Server中)的下一個連接。 在CGI模式中,php-cgi在此便退出了。
在上述情況中,你可以想像CGI通常有多慢。每一個Web請求PHP都必須重新解析php.ini、重新載入全部擴展並重初始化全部數據結構。使用FastCGI,所有這些都只在進程啟動時發生一次。一個額外的好處是,持續資料庫連接(Persistent database connection)可以工作。

FastCGI的不足

因為是多進程,所以比CGI多線程消耗更多的伺服器內存,PHP-CGI解釋器每進程消耗7至25兆內存,將這個數字乘以50或100就是很大的內存數。

Nginx 0.8.46+PHP 5.2.14(FastCGI)伺服器在3萬並發連接下,開啟的10個Nginx進程消耗150M內存(15M*10=150M),開啟的64個php-cgi進程消耗1280M內存(20M*64=1280M),加上系統自身消耗的內存,總共消耗不到2GB內存。如果伺服器內存較小,完全可以只開啟25個php-cgi進程,這樣php-cgi消耗的總內存數才500M。
上面的數據摘自Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建勝過Apache十倍的Web伺服器(第6版)

PHP-CGI

PHP-CGI是PHP自帶的FastCGI管理器。

PHP-CGI的不足:

php-cgi變更php.ini配置後需重啟php-cgi才能讓新的php-ini生效,不可以平滑重啟。
直接殺死php-cgi進程,php就不能運行了。(PHP-FPM和Spawn-FCGI就沒有這個問題,守護進程會平滑從新生成新的子進程。)
PHP-FPM

PHP-FPM是一個PHP FastCGI管理器,是只用於PHP的,可以在 http://php-fpm.org/download下載得到。

PHP-FPM其實是PHP源代碼的一個補丁,旨在將FastCGI進程管理整合進PHP包中。必須將它patch到你的PHP源代碼中,在編譯安裝PHP後才可以使用。

❻ php5-cgi和php5-fpm 這兩個東西是什麼意思啊有什麼區別

什麼是PHP-CGI:
PHP-CGI是PHP自帶的FastCGI管理器。
啟動PHP-CGI,使用如下命令
php-cgi -b 127.0.0.1:9000
PHP-CGI的不足:
1、php-cgi變更php.ini配置後需重啟php-cgi才能讓新的php-ini生效,不可以平滑重啟
2、直接殺死php-cgi進程,php就不能運行了。(PHP-FPM和Spawn-FCGI就沒有這個問題,守護進程會平滑從新生成新的子進程。)
什麼是PHP-FPM
PHP-FPM是一個PHP FastCGI管理器,是只用於PHP的,可以在 http://php-fpm.org/download下載得到.
PHP-FPM其實是PHP源代碼的一個補丁,旨在將FastCGI進程管理整合進PHP包中。必須將它patch到你的PHP源代碼中,在編譯安裝PHP後才可以使用。
現在我們可以在最新的PHP 5.3.2的源碼樹里下載得到直接整合了PHP-FPM的分支,據說下個版本會融合進PHP的主分支去。相對Spawn-FCGI,PHP-FPM在CPU和內存方面的控制都更勝一籌,而且前者很容易崩潰,必須用crontab進行監控,而PHP-FPM則沒有這種煩惱。
PHP5.3.3已經集成php-fpm了,不再是第三方的包了。PHP-FPM提供了更好的PHP進程管理方式,可以有效控制內存和進程、可以平滑重載PHP配置,比spawn-fcgi具有更多有點,所以被PHP官方收錄了。在./configure的時候帶 –enable-fpm參數即可開啟PHP-FPM。
二者的區別:
php-cgi是被調用的進程,php-fpm是配置和管理進程的。

❼ 如何通俗地解釋 CGI,FastCGI,php-fpm 之間的關系

CGI是公共網關介面(Common Gateway Interface),是為了保證web server(比如nginx)傳遞過來的數據是標准格式的,方便CGI程序的編寫者。當web server收到/index.php這個請求後,會啟動對應的CGI程序,這里就是PHP的解析器。接下來PHP解析器會解析php.ini文件,初始化執行環境,然後處理請求,再以規定CGI規定的格式返回處理後的結果,退出進程。web server再把結果返回給瀏覽器;

Fastcgi是用來提高CGI程序性能的,是一個協議。是一個常駐(long-live)型的CGI,它可以一直執行著,不會每次都要花費時間去fork一次(這是CGI最為人詬病的fork-and-execute 模式)。Fastcgi會先啟一個master,解析配置文件(比如php.ini文件),初始化執行環境,然後再啟動多個worker,當請求過來時,master會傳遞給一個worker,然後立即可以接受下一個請求;這樣就避免了重復的勞動,效率自然是高;它還支持分布式的運算,即 FastCGI 程序可以在網站伺服器以外的主機上執行並且接受來自其它網站伺服器來的請求;

PHP-FPM是一個實現了管理php Fastcgi的程序,PHP的解釋器是php-cgi。php-cgi只是個CGI程序,他自己本身只能解析請求,返回結果,不會進程管理,所以就出現了一些能夠調度php-cgi進程的程序,比如說由lighthttpd分離出來的spawn-fcgi。而PHP-FPM也可用於php fastcgi進程管理;

❽ php-fpm.sock和php-cgi.sock該用哪個

如果PHP是以CGI的形式運行,那麼php-fpm.sock 如果PHP是以命令行常駐內存的形式運行,就php-cgi.sock

❾ 如何通俗的解釋cgi,fastcgi,php-fpm之間的關系

這個問題可以分兩個層面討論:

1. PHP 解釋器是否嵌入 Web 伺服器進程內部執行

mod_php 通過嵌入 PHP 解釋器到 Apache 進程中,只能與 Apache 配合使用,而 cgi 和 fast-cgi 以獨立的進程的形式出現,只要對應的Web伺服器實現 cgi 或者 fast-cgi 協議,就能夠處理 PHP 請求。

mod_php 這種嵌入的方式最大的弊端就是內存佔用大,不論是否用到 PHP 解釋器都會將其載入到內存中,典型的就是處理CSS、JS之類的靜態文件是完全沒有必要載入解釋器。

2. 單個進程處理的請求數量

mod_php 和 fast-cgi 的模式在每個進程的生命周期內能夠處理多個請求,而 cgi 的模式處理一個請求就馬上銷毀進程,在高並發的場景下 cgi 的性能非常糟糕。

綜上,如果對性能有極高的要求,可以將靜態請求和動態請求分開,這時 Nginx + php-fpm 是比較好的選擇。

PS: cgi、fastcgi 通常指 Web 伺服器與解釋器通信的協議規范,而 php-fpm 是 fastcgi 協議的一個實現。

❿ php和cgi是什麼關系

CGI是通用網關協議,是開發動態網頁的一個標准,遵循這個標准就可以用BAT、CMD、sh、PERL、C、C++、PERL以及PHP等語言編寫程序處理網頁請求和返回數據到客戶端瀏覽器。

閱讀全文

與phpfpmcgi相關的資料

熱點內容
度人經pdf 瀏覽:898
怎麼配置android遠程伺服器地址 瀏覽:956
java程序員看哪些書 瀏覽:939
什麼app可以免費和外國人聊天 瀏覽:793
pdf手寫筆 瀏覽:178
別永遠傷在童年pdf 瀏覽:986
愛上北斗星男友在哪個app上看 瀏覽:419
主力散戶派發源碼 瀏覽:669
linux如何修復伺服器時間 瀏覽:59
榮縣優途網約車app叫什麼 瀏覽:477
百姓網app截圖是什麼意思 瀏覽:226
php如何嵌入html 瀏覽:813
解壓專家怎麼傳輸 瀏覽:745
如何共享伺服器的網路連接 瀏覽:134
程序員簡易表白代碼 瀏覽:168
什麼是無線加密狗 瀏覽:64
國家反詐中心app為什麼會彈出 瀏覽:69
cad壓縮圖列印 瀏覽:104
網頁打開速度與伺服器有什麼關系 瀏覽:865
android開發技術文檔 瀏覽:65