麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網(wǎng)站 > WEB服務(wù) > 正文

PHP-FPM與Nginx的通信機(jī)制的介紹(附示例)

2020-03-22 17:23:07
字體:
供稿:網(wǎng)友

本篇文章給大家?guī)淼膬?nèi)容是關(guān)于PHP-FPM與Nginx的通信機(jī)制的介紹(附示例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

PHP-FPM 介紹

CGI 協(xié)議與 FastCGI 協(xié)議

每種動態(tài)語言( PHP,Python 等)的代碼文件需要通過對應(yīng)的解析器才能被服務(wù)器識別,而 CGI 協(xié)議就是用來使解釋器與服務(wù)器可以互相通信。PHP 文件在服務(wù)器上的解析需要用到 PHP 解釋器,再加上對應(yīng)的 CGI 協(xié)議,從而使服務(wù)器可以解析到 PHP 文件。

由于 CGI 的機(jī)制是每處理一個請求需要 fork 一個 CGI 進(jìn)程,請求結(jié)束再kill掉這個進(jìn)程,在實(shí)際應(yīng)用上比較浪費(fèi)資源,于是就出現(xiàn)了CGI 的改良版本 FastCGI,F(xiàn)astCGI 在請求處理完后,不會 kill 掉進(jìn)程,而是繼續(xù)處理多個請求,這樣就大大提高了效率。

PHP-FPM 是什么

PHP-FPM 即 PHP-FastCGI Process Manager, 它是 FastCGI 的實(shí)現(xiàn),并提供了進(jìn)程管理的功能。進(jìn)程包含 master 進(jìn)程和 worker 進(jìn)程兩種;master 進(jìn)程只有一個,負(fù)責(zé)監(jiān)聽端口,接收來自服務(wù)器的請求,而 worker 進(jìn)程則一般有多個(具體數(shù)量根據(jù)實(shí)際需要進(jìn)行配置),每個進(jìn)程內(nèi)部都會嵌入一個 PHP 解釋器,是代碼真正執(zhí)行的地方。

Nginx 與 php-fpm 通信機(jī)制

當(dāng)我們訪問一個網(wǎng)站(如 www.test.com)的時候,處理流程是這樣的:

 www.test.com Nginx路由到www.test.com/index.php加載nginx的fast-cgi模塊fast-cgi監(jiān)聽127.0.0.1:9000地址www.test.com/index.php請求到達(dá)127.0.0.1:9000 等待處理...

Nginx 與 php-fpm 結(jié)合

在 Linux 上,Nginx 與 php-fpm 的通信有 tcp 和 unix socket 兩種方式。

tcp 的優(yōu)點(diǎn)是可以跨服務(wù)器,當(dāng) Nginx 和 PHP-fpm 不在同一臺機(jī)器上時,只能使用這種方式。

Unix socket 又叫 IPC(inter-process communication 進(jìn)程間通信) socket,用于實(shí)現(xiàn)同一主機(jī)上的進(jìn)程間通信,這種方式需要在 nginx配置文件中填寫 php-fpm 的 socket 文件位置。

兩種方式的數(shù)據(jù)傳輸過程如下圖所示:

1652902707-5c4f0ff2b4aef_articlex.png

二者的不同:

由于 Unix socket 不需要經(jīng)過網(wǎng)絡(luò)協(xié)議棧,不需要打包拆包、計算校驗(yàn)和、維護(hù)序號和應(yīng)答等,只是將應(yīng)用層數(shù)據(jù)從一個進(jìn)程拷貝到另一個進(jìn)程。所以其效率比 tcp 的方式要高,可減少不必要的 tcp 開銷。不過,Unix socket 高并發(fā)時不穩(wěn)定,連接數(shù)爆發(fā)時,會產(chǎn)生大量的長時緩存,在沒有面向連接協(xié)議的支撐下,大數(shù)據(jù)包可能會直接出錯不返回異常。而 tcp 這樣的面向連接的協(xié)議,可以更好的保證通信的正確性和完整性。

Nginx 與 php-fpm 結(jié)合只需要在各自的配置文件中做設(shè)置即可:

1) Nginx 中的配置

以 tcp 通信為例

server { listen 80; #監(jiān)聽80端口,接收http請求 server_name www.test.com; #就是網(wǎng)站地址 root /usr/local/etc/nginx/www/huxintong_admin; # 準(zhǔn)備存放代碼工程的路徑 #路由到網(wǎng)站根目錄www.test.com時候的處理 location / { index index.php; #跳轉(zhuǎn)到www.test.com/index.php autoindex on; #當(dāng)請求網(wǎng)站下php文件的時候,反向代理到php-fpm location ~ /.php$ { include /usr/local/etc/nginx/fastcgi.conf; #加載nginx的fastcgi模塊 fastcgi_intercept_errors on; fastcgi_pass 127.0.0.1:9000; # tcp 方式,PHP-fpm 監(jiān)聽的IP地址和端口 # fasrcgi_pass /usr/run/php-fpm.sock # unix socket 連接方式}

2) php-fpm 的配置

listen = 127.0.0.1:9000# 或者下面這樣listen = /var/run/php-fpm.sock
注意,在使用 Unix socket 方式連接時,由于 socket 文件本質(zhì)上是一個文件,存在權(quán)限控制的問題,所以需要注意 Nginx 進(jìn)程的權(quán)限與 php-fpm 的權(quán)限問題,不然會提示無權(quán)限訪問。(在各自的配置文件里設(shè)置用戶)

通過以上配置即可完成 php-fpm 與 Nginx 的通信。

以上就是PHP-FPM與Nginx的通信機(jī)制的介紹(附示例)的詳細(xì)內(nèi)容,PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 免费一级毛片在线播放视频 | 国产在线导航 | 91网址在线播放 | 中文字幕视频在线播放 | 日韩欧美中文字幕视频 | 日本高清电影在线播放 | 欧美性受xxxx白人性爽 | 黄色二区三区 | 国产免费观看电影网站 | 久久精品视频国产 | 成熟女人特级毛片www免费 | 欧美久久久一区二区三区 | 国产欧美在线一区二区三区 | 亚洲精品成人av在线 | 911色_911色sss主站色播 | 久久亚洲国产午夜精品理论片 | 亚洲午夜在线 | 久草网在线 | 久草在线手机观看 | 久久精品欧美一区 | 欧美精品亚洲人成在线观看 | 高清国产午夜精品久久久久久 | 久草在线新视觉 | 色综合久久久久久久久久 | 国产亚色| 91女上位 在线播放 性欧美日本 | 国产91精品亚洲精品日韩已满 | 一区二区三区精品国产 | 九九热视频免费在线观看 | 日产精品一区二区三区在线观看 | aa国产视频一区二区 | 国产一级午夜 | 综合激情网 | www.17c亚洲蜜桃 | 72pao成人国产永久免费视频 | 国产精品视频免费在线观看 | 成年人视频在线免费播放 | 久久99国产精品久久99果冻传媒 | 一级免费a| aa国产视频一区二区 | 免费国产网站 |