[TOC]
# 運行模式
******
php有著5種運行模式,常見的有4種:
<br />
## cgi 協議模式
cgi 模式 通用網關接口(Common Gateway Interface),它允許 web 服務器通過特定的協議與應用程序通信,調用原理大概為:
用戶請求--->Web 服務器接收請求--->fork 子進程 調用程序/執行程序--->程序返回內容/程序調用結束--->web 服務器接收內容--->返回給用戶 由于每次用戶請求,都得 fork 創建進程調用一次程序,然后銷毀進程,所以性能較低。
<br />
## fast-cgi 協議模式,
fast-cgi 是 cgi模式的升級版,它像一個常駐型的 cgi,只要開啟后,就可一直處理請求,不再需要結束進程,調用原理大概為:
web 服務器 fast-cgi 進程管理器初始化--->預先 fork n個進程
用戶請求--->web 服務器接收請求--->交給 fast-cgi 進程管理器--->fast-cgi 進程管理器接收,給其中一個空閑 fast-cgi 進程處理--->處理完成,fast-cgi 進程變為空閑狀態,等待下次請求--->web 服務器接收處理完成的內容--->返回給用戶
> 注意:fast-cgi 和 cgi 都是同一種協議,開啟的進程是單獨實現該協議的進程。
<br />
## 模塊模式
apache + php 運行時,默認使用的是模塊模式,它把 php 作為 apache 的模塊隨 apache 啟動而啟動,接收到用戶請求則直接通過調用 mod_php 模塊進行處理,詳細內容可自行百度。
<br />
## 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](http://php.net/manual/zh/features.commandline.php)
<br />
## 其他
> 本文將以上除了 php-cli 的模式,都定義為常規 web 訪問模式。
- 引言
- Introduction
- 運行模式
- php-fpm
- php-cli
- 基礎介紹
- 網絡協議
- ip
- tcp
- tcp
- http
- webSocket
- udp
- port端口
- 會話管理
- cookie
- session
- api/token
- linux基礎
- lnmp安裝
- 命令
- 進程管理
- 擴展安裝
- 端口監控
- 防火墻說明
- php7.0
- 部分新特性
- php回調/閉包
- 回調事件
- 閉包/匿名函數
- php多進程
- 多進程開啟
- 進程通信
- 進程信號
- 僵尸進程
- 孤兒進程
- 守護進程
- 同步/異步
- 阻塞/非阻塞
- 協程
- Swoole
- 初始Swoole
- 運行機制
- 生命周期
- composer使用
- EasySwoole
- 設計理念
- 組件說明
- 運行過程
- demo
- 提問的藝術