• <li id="0bn34"><legend id="0bn34"><th id="0bn34"></th></legend></li>

      <label id="0bn34"><mark id="0bn34"><strong id="0bn34"></strong></mark></label>
      <span id="0bn34"><optgroup id="0bn34"></optgroup></span> <label id="0bn34"><mark id="0bn34"><strong id="0bn34"></strong></mark></label>

      <rt id="0bn34"></rt>
      <span id="0bn34"><optgroup id="0bn34"><center id="0bn34"></center></optgroup></span>
      <li id="0bn34"><big id="0bn34"><listing id="0bn34"></listing></big></li>
      PHP內核探索:PHP的FastCGI
      • 更新時間:2025-05-08 07:59:21
      • 分享
      • 發布時間:7年前
      • 10026

      CGI全稱是“通用網關接口”(Common Gateway Interface), 它可以讓一個客戶端,從網頁瀏覽器向執行在Web服務器上的程序請求數據。 CGI描述了客戶端和這個程序之間傳輸數據的一種標準。 CGI的一個目的是要獨立于任何語言的,所以CGI可以用任何一種語言編寫,只要這種語言具有標準輸入、輸出和環境變量。 如php,perl,tcl等。

      FastCGI是Web服務器和處理程序之間通信的一種協議, 是CGI的一種改進方案,FastCGI像是一個常駐(long-live)型的CGI, 它可以一直執行,在請求到達時不會花費時間去fork一個進程來處理(這是CGI最為人詬病的fork-and-execute模式)。 正是因為他只是一個通信協議,它還支持分布式的運算,即 FastCGI 程序可以在網站服務器以外的主機上執行并且接受來自其它網站服務器來的請求。

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

      一般情況下,FastCGI的整個工作流程是這樣的:

      1. Web Server啟動時載入FastCGI進程管理器(IIS ISAPI或Apache Module)

      2. FastCGI進程管理器自身初始化,啟動多個CGI解釋器進程(可見多個php-cgi)并等待來自Web Server的連接。

      3. 當客戶端請求到達Web Server時,FastCGI進程管理器選擇并連接到一個CGI解釋器。 Web server將CGI環境變量和標準輸入發送到FastCGI子進程php-cgi。

      4. FastCGI子進程完成處理后將標準輸出和錯誤信息從同一連接返回Web Server。當FastCGI子進程關閉連接時, 請求便告處理完成。FastCGI子進程接著等待并處理來自FastCGI進程管理器(運行在Web Server中)的下一個連接。 在CGI模式中,php-cgi在此便退出了。

      PHP的CGI實現了Fastcgi協議,是一個TCP或UDP協議的服務器接受來自Web服務器的請求, 當啟動時創建TCP/UDP協議的服務器的socket監聽,并接收相關請求進行處理。隨后就進入了PHP的生命周期: 模塊初始化,sapi初始化,處理PHP請求,模塊關閉,sapi關閉等就構成了整個CGI的生命周期。

      以TCP為例,在TCP的服務端,一般會執行這樣幾個操作步驟:

      1. 調用socket函數創建一個TCP用的流式套接字;

      2. 調用bind函數將服務器的本地地址與前面創建的套接字綁定;

      3. 調用listen函數將新創建的套接字作為監聽,等待客戶端發起的連接,當客戶端有多個連接連接到這個套接字時,可能需要排隊處理;

      4. 服務器進程調用accept函數進入阻塞狀態,直到有客戶進程調用connect函數而建立起一個連接;

      5. 當與客戶端創建連接后,服務器調用read_stream函數讀取客戶的請求;

      6. 處理完數據后,服務器調用write函數向客戶端發送應答。

      PHP的FastCGI使你的所有php應用軟件通過mod_fastci運行,而不是mod_phpsusexec。FastCGI應用速度很快是因為他們持久穩定,不必對每一個請求都啟動和初始化。這使得應用程序的開發成為可能,否則在CGI范例是不切實際的(例如一個大型的腳本,或者一個需要 連接單個或多個數據庫的應用)。

      FastCGI的優點:

      1. PHP腳本運行速度更快(3到30倍)。PHP解釋程序被載入內存而不用每次需要時從存儲器讀取,極大的提升了依靠腳本運行的站點的性能。

      2. 需要使用更少的系統資源。由于服務器不用每次需要時都載入PHP解釋程序,你可以將站點的傳輸速度提升很高而不必增加cpu負擔。

      3. 不需要對現有的代碼作任何改變。現有的一切都適用于PHP的FastCGI。

      但是也會有潛在問題:

      • 對所有的子目錄(/home/USERNAME/public_html/php.ini)你只有一個可用的php.ini文件。這是優化網站代碼所必需的。如果你需要多個php.ini文件以適應不同的腳本需要,你可以在任何子目錄禁用PHP的快速CGI,而其余的地方則繼續有效。如果你需要這樣做請聯系support。

      • 你對PHP環境做的任何升級(如php.ini文件的改變)都有幾分鐘的延遲。這是因為為了更快的速度你的php.ini文件已經被載入內存,而不是每次需要時再從存儲器重新讀取。


      我們專注高端建站,小程序開發、軟件系統定制開發、BUG修復、物聯網開發、各類API接口對接開發等。十余年開發經驗,每一個項目承諾做到滿意為止,多一次對比,一定讓您多一份收獲!

      本文章出于推來客官網,轉載請表明原文地址:https://www.tlkjt.com/marketing/80.html
      推薦文章

      在線客服

      掃碼聯系客服

      3985758

      回到頂部

      校花哭着扒开屁股浣肠漫画| 天天躁日日躁狠狠躁| 亚洲精品一区二区三区四区乱码 | 国产熟女乱子视频正在播放| 538prom在线| 国产欧美在线一区二区三区| 麻豆女神吴梦梦| 国产精品美女久久久久av福利| 一级性生活毛片| 成人免费毛片观看| 中文字幕23页| 成人性生交大片免费看好| 久久婷婷是五月综合色狠狠 | 欧美另类videosgratis妇| 亚洲综合校园春色| 激情freesexhd糟蹋videos| 午夜精品久久久久久| 精品欧美一区二区三区精品久久 | 亚洲丝袜第一页| 果冻传媒视频在线观看| 亚洲av无码日韩av无码网站冲| 日韩人妻无码精品无码中文字幕| 亚洲国产最大av| 欧美丰满白嫩bbxx| 亚洲国产精品综合一区在线| 欧美性受xxxx白人性爽| 亚洲欧美日韩精品| 欧美怡红院免费全视频| 亚洲人成77777在线播放网站 | 调教奴性同桌h| 国产性夜夜春夜夜爽| 老师你的兔子好软水好多的车视频| 国产亚洲精品无码成人| 色丁香在线观看| 国产三级在线观看视频| 美女把尿口扒开给男人桶视频| 国产乱妇无码大黄aa片| 翁虹一级毛片手机观看| 另类国产女王视频区| 男女混合的群应该取什么名字| 六月丁香婷婷色狠狠久久|