> 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服務器接收內容->返回給用戶
_**PS: 注意,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
## ISAPI
ISAPI 全稱是 **Internet Server Application Program Interface** ,它是微軟提供的一套面向 Internet 服務的 API 接口。一個 ISPAI 的 DLL,可以在被用戶請求激活后長駐內存,等待用戶的后續請求。
**ISAPI** 模式只能運行于 Windows 環境,當 ISAPI 的 DLL 應用程序和 WWW 服務器處于同一個進程中時,效率會明顯高于 CGI。
PHP 5.3.1 版本開始不再支持 ISAPI 模式,因此看不到 `php5isapi.dll` 這個文件。
- PHP
- PHP 核心架構
- PHP 生命周期
- PHP-FPM 詳解
- PHP-FPM 配置優化
- PHP 命名空間和自動加載
- PHP 運行模式
- PHP 的 Buffer(緩沖區)
- php.ini 配置文件參數優化
- 常見面試題
- 常用函數
- 幾種排序算法
- PHP - 框架
- Laravel
- Laravel 生命周期
- ThinkPHP
- MySQL
- 常見問題
- MySQL 索引
- 事務
- 鎖機制
- Explain 使用分析
- MySQL 高性能優化規范
- UNION 與 UNION ALL
- MySQL報錯:sql_mode=only_full_group_by
- MySQL 默認的 sql_mode 詳解
- 正則表達式
- Redis
- Redis 知識
- 持久化
- 主從復制、哨兵、集群
- Redis 緩存擊穿、穿透、雪崩
- Redis 分布式鎖
- RedisBloom
- 網絡
- 計算機網絡模型
- TCP
- UDP
- HTTP
- HTTPS
- WebSocket
- 常見幾種網絡攻擊方式
- Nginx
- 狀態碼
- 配置文件
- Nginx 代理+負載均衡
- Nginx 緩存
- Nginx 優化
- Nginx 配置 SSL 證書
- Linux
- 常用命令
- Vim 常用操作命令
- Supervisor 進程管理
- CentOS與Ubuntu系統區別
- Java
- 消息隊列
- 運維
- RAID 磁盤陣列
- 邏輯分區管理 LVM
- 業務
- 標準通信接口設計
- 業務邏輯開發套路的三板斧
- 微信小程序登錄流程
- 7種Web實時消息推送方案
- 用戶簽到
- 用戶注冊-短信驗證碼
- SQLServer 刪除同一天用戶重復簽到
- 軟件研發完整流程
- 前端
- Redux
- 其他
- 百度云盤大文件下載
- 日常報錯記錄
- GIT
- SSL certificate problem: unable to get local issuer certificate
- NPM
- reason: connect ECONNREFUSED 127.0.0.1:31181
- SVN
- SVN客戶端無法連接SVN服務器,主機積極拒絕
- Python
- 基礎
- pyecharts圖表
- 對象
- 數據庫
- PySpark
- 多線程
- 正則
- Hadoop
- 概述
- HDFS