国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【面試題28】什么是PHP-FPM?它與PHP和Nginx有什么關(guān)系

這篇具有很好參考價(jià)值的文章主要介紹了【面試題28】什么是PHP-FPM?它與PHP和Nginx有什么關(guān)系。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


一、前言

本文已收錄于PHP全棧系列專欄:PHP面試專區(qū)。
計(jì)劃將全覆蓋PHP開發(fā)領(lǐng)域所有的面試題,對(duì)標(biāo)資深工程師/架構(gòu)師序列,歡迎大家提前關(guān)注鎖定。文章來源地址http://www.zghlxwxcb.cn/news/detail-534287.html

二、什么是PHP-FPM?

PHP-FPM(FastCGI Process Manager)是PHP的FastCGI進(jìn)程管理器,它是PHP 5.3.3及更高版本的一部分。它通過為每個(gè)請(qǐng)求分配一個(gè)獨(dú)立的進(jìn)程來提高PHP腳本的執(zhí)行效率和性能,并且可以與Web服務(wù)器(如Nginx、Apache等)進(jìn)行通信。

【面試題28】什么是PHP-FPM?它與PHP和Nginx有什么關(guān)系,PHP面試題專區(qū),php,nginx,開發(fā)語(yǔ)言

三、PHP-FPM的生命周期

PHP-FPM的生命周期包括啟動(dòng)、初始化、請(qǐng)求處理和關(guān)閉四個(gè)主要階段。

3.1 啟動(dòng)階段

在啟動(dòng)階段,PHP-FPM會(huì)讀取配置文件(通常是php-fpm.conf)中的設(shè)置,并根據(jù)這些設(shè)置初始化進(jìn)程池(worker pool)。進(jìn)程池中包括多個(gè)子進(jìn)程,每個(gè)子進(jìn)程負(fù)責(zé)處理一個(gè)請(qǐng)求。

3.2 初始化階段

在初始化階段,PHP-FPM會(huì)加載PHP解析器和其他必要的模塊,并預(yù)先分配一定數(shù)量的子進(jìn)程用于處理請(qǐng)求。這些子進(jìn)程可以根據(jù)配置文件中的設(shè)置自動(dòng)增加或減少。

3.3 請(qǐng)求處理階段

在請(qǐng)求處理階段,當(dāng)Web服務(wù)器(如Nginx)接收到一個(gè)HTTP請(qǐng)求后,會(huì)將該請(qǐng)求轉(zhuǎn)發(fā)給PHP-FPM處理。PHP-FPM會(huì)從進(jìn)程池中選取一個(gè)可用的子進(jìn)程來處理請(qǐng)求,并通過FastCGI協(xié)議與該子進(jìn)程進(jìn)行通信。

子進(jìn)程接收到請(qǐng)求后,會(huì)加載相應(yīng)的PHP腳本,并執(zhí)行腳本中的代碼。在處理完請(qǐng)求后,子進(jìn)程會(huì)將處理結(jié)果返回給PHP-FPM,然后再由PHP-FPM返回給Web服務(wù)器,最終返回給客戶端。

3.4 關(guān)閉階段

在關(guān)閉階段,當(dāng)PHP-FPM接收到關(guān)閉信號(hào)(如SIGINT)時(shí),它會(huì)停止接收新的請(qǐng)求,并等待已有的請(qǐng)求處理完畢。同時(shí),PHP-FPM會(huì)關(guān)閉所有子進(jìn)程,釋放資源并退出。

四、PHP-FPM與PHP的關(guān)系

PHP是一種腳本語(yǔ)言,而PHP-FPM是PHP的一個(gè)運(yùn)行環(huán)境。它們之間的關(guān)系可以類比于Java和Tomcat的關(guān)系,PHP是一門語(yǔ)言,而PHP-FPM是一種用于解析和執(zhí)行PHP腳本的環(huán)境。

PHP-FPM通過提供一個(gè)進(jìn)程管理器來提高PHP腳本的執(zhí)行效率和性能,使得PHP可以更好地與Web服務(wù)器進(jìn)行通信,并處理大量并發(fā)請(qǐng)求。

五、PHP-FPM與Nginx的通信方式

PHP-FPM與Nginx之間通過FastCGI協(xié)議進(jìn)行通信。FastCGI是一種高性能的CGI協(xié)議擴(kuò)展,它通過在Web服務(wù)器和PHP-FPM之間建立一個(gè)長(zhǎng)連接來提供更高的性能和效率。

具體的通信過程如下:

  1. Nginx接收到一個(gè)HTTP請(qǐng)求后,將其轉(zhuǎn)發(fā)給PHP-FPM處理。
  2. PHP-FPM監(jiān)聽在一個(gè)特定的端口上,并等待來自Nginx的請(qǐng)求。
  3. Nginx通過FastCGI協(xié)議將HTTP請(qǐng)求轉(zhuǎn)換成一個(gè)二進(jìn)制數(shù)據(jù)流,并發(fā)送給PHP-FPM。
  4. PHP-FPM接收到這個(gè)二進(jìn)制數(shù)據(jù)流后,解析出HTTP請(qǐng)求的內(nèi)容。
  5. PHP-FPM調(diào)用相應(yīng)的PHP腳本并執(zhí)行,然后將執(zhí)行結(jié)果轉(zhuǎn)換成一個(gè)二進(jìn)制數(shù)據(jù)流,并發(fā)送回Nginx。
  6. Nginx將PHP-FPM返回的二進(jìn)制數(shù)據(jù)流解析為HTTP響應(yīng),并發(fā)送給客戶端。

這種基于FastCGI協(xié)議的通信方式可以實(shí)現(xiàn)高效的請(qǐng)求處理和資源共享,提高Web應(yīng)用的性能和可靠性。

六、總結(jié)

PHP-FPM是PHP的FastCGI進(jìn)程管理器,它通過為每個(gè)請(qǐng)求分配一個(gè)獨(dú)立的進(jìn)程來提高PHP腳本的執(zhí)行效率和性能。PHP-FPM與Nginx通過FastCGI協(xié)議進(jìn)行通信,實(shí)現(xiàn)高效的請(qǐng)求處理和資源共享。

了解PHP-FPM的生命周期和與PHP、Nginx的關(guān)系及通信方式,可以幫助我們更好地理解PHP-FPM的工作原理和優(yōu)勢(shì),從而提高PHP應(yīng)用的性能和可靠性。

本文已收錄于PHP全棧系列專欄:PHP面試專區(qū)。
計(jì)劃將全覆蓋PHP開發(fā)領(lǐng)域所有的面試題,對(duì)標(biāo)資深工程師/架構(gòu)師序列,歡迎大家提前關(guān)注鎖定。

到了這里,關(guān)于【面試題28】什么是PHP-FPM?它與PHP和Nginx有什么關(guān)系的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Linux系統(tǒng)下配置Nginx使部分URL使用多套自定義的PHP-FPM配置

    1. Tcp默認(rèn)的9000端口通信: php-fpm配置:listen = 127.0.0.1 與nginx進(jìn)程通信:fastcgi_pass 127.0.0.1:9000; 優(yōu)點(diǎn): 使用網(wǎng)絡(luò)傳輸,可以跨服務(wù)器。 TCP通信有一些校驗(yàn)機(jī)制,具有更高的穩(wěn)定性。 缺點(diǎn): 性能略微比socket差。 2. Unix Socket(套接字)通信: php-fpm配置 :listen = /tmp/php-cgi.sock 與

    2024年02月08日
    瀏覽(21)
  • PHP-FPM與Nginx通信報(bào) 502 Bad Gateway或504 Gateway Timeout終極解決方案(適用于PHP執(zhí)行耗時(shí)任務(wù)情況下的報(bào)錯(cuò))

    適用于常規(guī)請(qǐng)求都沒問題,但是執(zhí)行某些php腳本需要超過一分鐘的情況下的502/504,并不是任何請(qǐng)求都502/504的情況(這說明php-fpm或者nginx配置錯(cuò)誤)。 執(zhí)行腳本時(shí)間太長(zhǎng),期間php沒有返回任何的數(shù)據(jù)。 php-fpm超時(shí),nginx沒超時(shí) 。nginx認(rèn)為php-fpm罷工了,然后拋出了異常。 執(zhí)行腳

    2024年02月08日
    瀏覽(23)
  • php-fpm設(shè)置開機(jī)啟動(dòng)

    看了nginx和redis的shell啟動(dòng)腳本,發(fā)現(xiàn)服務(wù)的開啟和關(guān)閉其實(shí)就是操作服務(wù)進(jìn)程號(hào),那么給php服務(wù)也寫個(gè)shell腳本,也能實(shí)現(xiàn)service start 和 stop? ?進(jìn)入Linux服務(wù)的初始化目錄 創(chuàng)建phpfpmd進(jìn)程腳本(進(jìn)程控制腳本規(guī)范上默認(rèn)都加后綴d) ?第一行,說明shell的運(yùn)行環(huán)境,有些服務(wù)器默

    2023年04月18日
    瀏覽(18)
  • php-fpm未授權(quán)訪問漏洞

    php-fpm未授權(quán)訪問漏洞

    目錄 一、產(chǎn)生原因 二、利用條件 三、過程原理 四、復(fù)現(xiàn)過程 php-fpm配置不當(dāng),fastcgi_pass這里配置了0.0.0.0,將fastcgi接口暴露在公網(wǎng),任何人都可以利用接口對(duì)php-fpm發(fā)送fastcgi協(xié)議數(shù)據(jù),更改php.ini配置文件,導(dǎo)致遠(yuǎn)程代碼執(zhí)行 此漏洞屬于配置不當(dāng),因此影響所有php版本 php-f

    2024年02月09日
    瀏覽(20)
  • linux下查看php進(jìn)程,開啟php-fpm&殺死php進(jìn)程

    linux下查看php進(jìn)程,開啟php-fpm&殺死php進(jìn)程

    1、查看php進(jìn)程 出現(xiàn)如圖結(jié)果說明未開啟 2、查看php安裝路徑 3、開啟php-fpm 再次查看ps -ef |grep php 以樹狀圖的方式展現(xiàn)php進(jìn)程 4、關(guān)閉php-fpm

    2024年02月11日
    瀏覽(21)
  • PHP CGI、FastCGI、PHP-FPM、PHP-CGI 區(qū)別

    PHP CGI、FastCGI、PHP-FPM、PHP-CGI 是不同的PHP執(zhí)行方式和處理程序。它們有以下區(qū)別: PHP CGI (Common Gateway Interface):PHP CGI是一種通過CGI協(xié)議與Web服務(wù)器通信的PHP執(zhí)行方式。在每次請(qǐng)求時(shí),Web服務(wù)器會(huì)將請(qǐng)求傳遞給PHP解釋器,PHP解釋器會(huì)解析并執(zhí)行PHP腳本,并將結(jié)果返回給Web服務(wù)器

    2024年02月11日
    瀏覽(19)
  • 利用Fastcgi+PHP-FPM非授權(quán)訪問實(shí)現(xiàn)代碼執(zhí)行

    利用Fastcgi+PHP-FPM非授權(quán)訪問實(shí)現(xiàn)代碼執(zhí)行

    目錄 Fastcgi Record Fastcgi Type PHP-FPM(FastCGI進(jìn)程管理器) Nginx(IIS7)解析漏洞 security.limit_extensions配置 漏洞演示 今天要和大家分享的是利用Fastcgi和PHP_FPM實(shí)現(xiàn)未授權(quán)訪問實(shí)現(xiàn)代碼執(zhí)行,首先我們需要知道cgi、fastcgi和php-fpm這些都是什么。 什么是CGI CGI全稱是“公共網(wǎng)關(guān)接口”(Co

    2024年01月21日
    瀏覽(22)
  • Docker搭建LNMP環(huán)境實(shí)戰(zhàn)(08):安裝php-fpm

    Docker搭建LNMP環(huán)境實(shí)戰(zhàn)(08):安裝php-fpm

    在文件夾:/mnt/hgfs/dockers/test_site/www目錄下創(chuàng)建文件:test.php,內(nèi)容為: 在文件夾:/mnt/hgfs/dockers/test_site/compose下創(chuàng)建文件:test_site_php.yml,內(nèi)容如下: 注意:此文件中網(wǎng)絡(luò)的名稱和nginx配置文件中網(wǎng)絡(luò)的名稱是相同的,都是:test_site_network 注意:最后一段為新加的修改 圖1 f

    2024年04月13日
    瀏覽(21)
  • 面試題-TS(一):TypeScript是什么?它與JavaScript有什么區(qū)別?

    面試題-TS(一):TypeScript是什么?它與JavaScript有什么區(qū)別? TypeScript是一種編程語(yǔ)言,它是JavaScript的超集。它通過添加靜態(tài)類型、類、接口和模塊等功能來擴(kuò)展JavaScript。 JavaScript是一種廣泛應(yīng)用于Web開發(fā)的腳本語(yǔ)言,它的靈活性和易用性使得它成為了開發(fā)者們的首選。然而,Jav

    2024年02月15日
    瀏覽(19)
  • 面試題-React(三):什么是JSX?它與常規(guī)JavaScript有什么不同?

    面試題-React(三):什么是JSX?它與常規(guī)JavaScript有什么不同?

    在React的世界中,JSX是一項(xiàng)引人注目的技術(shù),它允許開發(fā)者在JavaScript中嵌套類似HTML的標(biāo)簽,用于描述UI組件的結(jié)構(gòu)。本篇博客將通過豐富的代碼示例,深入探索JSX語(yǔ)法,解析其在React中的用法和優(yōu)勢(shì)。 一、JSX基礎(chǔ)語(yǔ)法 在React項(xiàng)目中,你會(huì)經(jīng)??吹筋愃艸TML的代碼塊,這就是JS

    2024年02月12日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包