PHP 运行方式温故

2016/07/19
php的运行方式都有哪几种 当然我也是刚刚稍微有点了解
自从用过swoole和workerman 这些东西就非常明白了有点
然后记录下 知道了运行原理报错的时候才不会手忙脚乱
然后网上很多写的都很复杂
读起来完全很难受 干脆自己在整理下完事
博文都是原创  复制请谨慎

CGI

CGI网络解释为通用网关接口
简单点的解释就是 把网页和web服务器中执行的程序连接起来的桥梁
在说白点就是 让web server支持各种脚本 比如php jsp python shell
它把前台执行的动作交给服务器程序去执行 再把服务器执行的结果返回给前端
这样的话它的跨平台的性能就非常的强的
那它怎么运行的呢
首先CGI遇到请求先要创建cgi的子进程  然后处理客户端发来的请求 
处理完后就结束当前的这个子进程 
模型:frok-and-execute模式
那它的缺点就暴漏了
因为多少连接就会创建多少的CGI子进程 然后反复的创建和关闭
会造成大量的占用系统资源 那么性能自然就下来了
适合站点  小规模的  请求量少的 

FastCGI

理解完上面的 那下面的就更好理解了
fast-cgi是cgi的升级版本 
fast-cgi 特点  常驻内存
这样cgi进程就一直运行
不会花费时间开销和系统开销了
如果使用fast-cgi那么php会使用fastcgi进程管理器进行管理

工作流程:
web server 启动的时候会载入fastcgi进程管理器
fastcgi进程管理器然后自己初始化 启动多个进程
然后多个进程监听客户端的请求 
最关键的部分就是子进程处理完客户端的请求不会释放
会进入一级战备状态  然后继续等待新的客户端请求发来

这就好像nginx进程分配有静态的 有动态的
静态是固定数量的进程  动态的可以设置上限
详情请查看我的另一篇文章

实践理论

比如你用cgi和fast-cgi
然后linux 下
ps aux | grep php
你看下进程数
当请求发来的时间 用ab进行增量发送
然后观察进程即可
这样在读上面的内容就会有一目了然的感觉了

apache模块加载的方式

php作为apache模块 apache服务器启动的时候会生成多个进程副本常驻内存
一旦有请求  就立即用空闲的进程进行接待 接客啦
这样和fpm差不多了就  没有占用系统的开销
请求完成也是不退出
一级战备

php CLI

cli是php命令行下运行的方式
php -m可以查看扩展
也可以运行守护进程
可以运行php脚本

个人随笔

安静的等待,你若盛开,蝴蝶自来

承接高质量 网站开发 app开发 如有需要请点击About联系

@承鹏辉