您好,登錄后才能下訂單哦!
小編給大家分享一下php的三個運行環(huán)境是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
1、nginx + swoole
swoole是一個異步、并行、高性能的網(wǎng)絡(luò)通信引擎,使用純C語言編寫,提供了php語言的異步多線程服務(wù)器。swoole內(nèi)置了http/websocket服務(wù)器端和客戶端,http2.0服務(wù)器端,支持類似Go語言的協(xié)程,可以使用同步代碼實現(xiàn)一步程序。
swoole采用I/O多路復用異步阻塞的Reactor模型,采用多線程Reactor+多線程Worker實現(xiàn)異步I/O。Reactor基于Epoll,每個Reactor可以處理無數(shù)個連接請求,因而可以輕松處理高并發(fā)。
Nginx+swoole模式下,nginx作為前端接入層轉(zhuǎn)發(fā)機,swoole作為應(yīng)用服務(wù)器構(gòu)建高并發(fā)web服務(wù)。
2、nginx + php-fpm
FastCGI是一個中立的技術(shù)標準,php-fpm是php語言的FastCGI進程管理器。
CGI的fork-and-execute模式有很多缺點,每接收一個請求就要fork一個進程處理,只能接收一個請求做出一個響應(yīng);每一個web請求PHP都必須重新解析php.ini文件,重新載入全部擴展并初始化全部數(shù)據(jù)結(jié)構(gòu)。
FastCGI會事先啟動起來,解析php.ini文件,載入擴展,初始化數(shù)據(jù)結(jié)構(gòu)都只會在啟動時完成,作為一個CGI管理服務(wù)器存在,使用進程/線程池預(yù)先啟動一系列的子進程來等待處理。然后web服務(wù)器發(fā)過來請求,一旦FastCGI接收到請求就交給子進程處理,不需要在接收到請求后啟動CGI,會快很多。Web服務(wù)器通過一個socket長連接請求FastCGI進程管理器。
FastCGI進程像是一個常駐CGI,在請求到達時,F(xiàn)astCGI進程管理器選擇并連接一個PHP-CGI解釋器去接收web服務(wù)器發(fā)送過來的環(huán)境變量和標準輸入,請求處理完成后將標準輸出或錯誤從同一連接返回給web服務(wù)器,該PHP-CGI解釋器子進程等待處理來自FastCGI進程管理器的下一個連接。
3、apache + mod_php
mod_php模式運行php,意味著php是作為apache的一個模塊來啟動。只有在apache啟動的時候會讀取php.ini配置文件并加載擴展模塊,在apache運行期間是不會再去讀取和加載擴展模塊的。Apache出于穩(wěn)定性和安全性考慮,通常使用默認的prefork模式運行php程序。在prefork模式下,一個單獨的控制進程負責產(chǎn)生子進程,這些子進程用于監(jiān)聽請求并作出應(yīng)答。
Apache總是試圖保持一些備用或空閑的子進程用于迎接即將到來的請求,這樣客戶端無需在得到服務(wù)前等候子進程的產(chǎn)生。但是,一旦連接數(shù)多了,apache必須要生成更多的進程來響應(yīng)請求,CPU對于進程的切換就很頻繁,很耗事件和資源,導致apache性能下降;同時,apache在同步阻塞I/O模型下,select遍歷多個連接句柄才能知道句柄是否有事件通知,因此效率非常低。
以上是php的三個運行環(huán)境是什么的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。