運行模式
php有著5種運行模式,常見的有4種:
cgi 協議模式
cgi模式 通用網關接口(Common Gateway Interface),它允許web服務器通過特定的協議與應用程序通信,
調用原理大概為:
用戶請求->Web服務器接收請求->fork子進程 調用程序/執行程序->程序返回內容/程序調用結束->web服務器接收內容->返回給用戶
由于每次用戶請求,都得fork創建進程調用一次程序,然后銷毀進程,所以性能較低
fast-cgi 協議模式
fast-cgi是cgi模式的升級版,它像是一個常駐型的cgi,只要開啟后,就可一直處理請求,不再需要結束進程,
調用原理大概為:
web服務器fast-cgi進程管理器初始化->預先fork n個進程
用戶請求->web服務器接收請求->交給fast-cgi進程管理器->fast-cgi進程管理區接收,給其中一個空閑fast-cgi進程處理->處理完成,fast-cgi進程變為空閑狀態,等待下次請求->web服務器接收內容->返回給用戶
注意,fast-cgi和cgi都是一種協議,開啟的進程是單獨實現該協議的進程
模塊模式
apache+php運行時,默認使用的是模塊模式,它把php作為apache的模塊隨apache啟動而啟動,接收到用戶請求時則直接通過調用mod_php模塊進行處理,詳細內容可自行百度
php-cli模式
php-cli模式屬于命令行模式,對于很多剛開始學php就開始wamp,wnmp的開發者來說是最陌生的一種運行模式
該模式不需要借助其他程序,直接輸入php xx.php 就能執行php代碼
命令行模式和常規web模式明顯不一樣的是:
- 沒有超時時間
- 默認關閉buffer緩沖
- STDIN和STDOUT標準輸入/輸出/錯誤 的使用
- echo var_dump,phpinfo等輸出直接輸出到控制臺
- 可使用的類/函數 不同
- php.ini配置的不同
想要了解詳細內容可查看http://php.net/manual/zh/features.commandline.php
其他
本文將以上除了php-cli的模式,都定義為常規web訪問模式