91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP的運行模式

發布時間:2020-11-10 10:42:29 來源:億速云 閱讀:136 作者:小新 欄目:編程語言

小編給大家分享一下PHP的運行模式,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

1、PHP的運行模式:

PHP兩種運行模式是WEB模式、CLI模式。無論哪種模式,PHP工作原理都是一樣的,作為一種SAPI運行。

1、當我們在終端敲入php這個命令的時候,它使用的是CLI。

它就像一個web服務器一樣來支持php完成這個請求,請求完成后再重新把控制權交給終端。

2、當使用Apache或者別web服務器作為宿主時,當一個請求到來時,PHP會來支持完成這個請求。一般有:

多進程(通常編譯為apache的模塊來處理PHP請求)

多線程模式

簡要的執行過程:

1. PHP是隨著Apache的啟動而運行的;

2. PHP通過mod_php5.so模塊和Apache相連(具體說來是SAPI,即服務器應用程序編程接口);
3. PHP總共有三個模塊:內核、Zend引擎、以及擴展層;
4. PHP內核用來處理請求、文件流、錯誤處理等相關操作;
5. Zend引擎(ZE)用以將源文件轉換成機器語言,然后在虛擬機上運行它;
6. 擴展層是一組函數、類庫和流,PHP使用它們來執行一些特定的操作。比如,我們需要MySQL擴展來連接MySQL數據庫;
7. 當ZE執行程序時可能會需要連接若干擴展,這時ZE將控制權交給擴展,等處理完特定任務后再返還;
8. 最后,ZE將程序運行結果返回給PHP內核,它再將結果傳送給SAPI層,最終輸出到瀏覽器上。

2. 運行PHP的幾個階段:

SAPI運行PHP都經過下面幾個階段:
      1、模塊初始化階段(Module init)     :
          即調用每個擴展源碼中的的PHP_MINIT_FUNCTION中的方法初始化模塊,進行一些模塊所需變量的申請,內存分配等。
       2、請求初始化階段(Request init)  :
          即接受到客戶端的請求后調用每個擴展的PHP_RINIT_FUNCTION中的方法,初始化PHP腳本的執行環境。
       3、執行PHP腳本
       4、請求結束(Request Shutdown) :
         這時候調用每個擴展的PHP_RSHUTDOWN_FUNCTION方法清理請求現場,并且ZE開始回收變量和內存。
       5、關閉模塊(Module shutdown)     :
          Web服務器退出或者命令行腳本執行完畢退出會調用擴展源碼中的PHP_MSHUTDOWN_FUNCTION 方法

3. 各種情況下的SAPI生命周期。

1. 單進程SAPI生命周期。(CGI)

CLI/CGI模式的PHP屬于單進程的SAPI模式。這類的請求在處理一次請求后就關閉。也就是說每次請求都會重復這幾個環節: 開始 - 請求開始 - 請求關閉 - 結束 。可以看到擴展的初始化花費了很多資源。

2. 多進程SAPI生命周期。(MPM的perfork方式)

通常PHP是編譯為apache的一個模塊來處理PHP請求(mod_php)。Apache一般會采用多進程模式, Apache啟動后會fork出多個子進程(apache里可以指定開始fork出來的進程數)。每個進程的內存空間獨立,每個子進程剛被fock出來都會經過開始和結束環節。

PHP的運行模式

3. 多線程的SAPI生命周期。(FastCGI或者MPM的work方式里的單個進程)

多線程模式和多進程中的某個進程類似,在這種模式下,只有一個服務器進程在運行著,但會同時運行很多線程,這樣可以減少一些資源開銷,向Module init和Module shutdown就只需要運行一遍就行了,一些全局變量也只需要初始化一次,因為線程獨具的特質,使得各個請求之間方便的共享一些數據成為可能。

PHP的運行模式

以上是PHP的運行模式的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

福安市| 德化县| 临猗县| 连城县| 宜兴市| 南丹县| 惠安县| 景谷| 兴国县| 察哈| 青冈县| 综艺| 新建县| 赤壁市| 旅游| 阿克陶县| 乐亭县| 公主岭市| 濉溪县| 翁源县| 梁平县| 泽州县| 西盟| 南江县| 随州市| 海宁市| 齐齐哈尔市| 册亨县| 板桥市| 吉木萨尔县| 巩留县| 鹤山市| 开鲁县| 垫江县| 澳门| 博湖县| 赫章县| 桐城市| 谢通门县| 张家港市| 夏邑县|