php的4种常见运行方式

投稿:junjie 字体:[增加 减小] 类型:转载 时间:2015-03-20 我要评论

这篇文章主要介绍了php的4种常见运行方式,本文讲解了CGI、FastCGI、APACHE2HANDLER、CLI等4种运行方式,需要的朋友可以参考下

SAPI:Server Application Programming Interface服务端应用编程端口。他就是php与其他应用交互的接口,php脚本要执行有很多中方式,通过web服务器,或者直接在命令行行下,也可以嵌入其他程序中。SAPI提供了一个和外部通信的接口,常见的SAPI有:cgi、fast-cgi、cli、Apache模块的dll等。

1、CGI

CGI即通用网关接口(common gatewag interface),它是一段程序,通俗的讲CGI就象是一座桥,把网页和WEB服务器中的执行程序连接起来,它把HTML接收的指令传递给服务器的执 行程序,再把服务器执行程序的结果返还给HTML页。CGI 的跨平台性能极佳,几乎可以在任何操作系统上实现。

CGI方式在遇到连接请求(用户 请求)先要创建cgi的子进程,激活一个CGI进程,然后处理请求,处理完后结束这个子进程。这就是fork-and-execute模式。所以用cgi 方式的服务器有多少连接请求就会有多少cgi子进程,子进程反复加载是cgi性能低下的主要原因。都会当用户请求数量非常多时,会大量挤占系统的资源如内 存,CPU时间等,造成效能低下。

2、FastCGI

fast-cgi 是cgi的升级版本,FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一 次。PHP使用PHP-FPM(FastCGI Process Manager),全称PHP FastCGI进程管理器进行管理。

Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)。FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。

当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi。

FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。 在CGI模式中,php-cgi在此便退出了。

在上述情况中,你可以想象CGI通常有多慢。每一个Web 请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的 好处是,持续数据库连接(Persistent database connection)可以工作。

3、APACHE2HANDLER
PHP作为Apache模块,Apache服务器在系统启动后,预先生成多个进程副本驻留在内存中,一旦有请求出 现,就立即使用这些空余的子进程进行处理,这样就不存在生成子进程造成的延迟了。这些服务器副本在处理完一次HTTP请求之后并不立即退出,而是停留在计算机中等待下次请求。对于客户浏览器的请求反应更快,性能较高。

4、CLI

cli是php的命令行运行模式,大家经常会使用它,但是可能并没有注意到(例如:我们在linux下经常使用 “php -m”查找PHP安装了那些扩展就是PHP命令行运行模式;

相关链接

php的四种常见运行方式相关推荐

  1. 最新开源LiDAR数据集LSOOD:四种常见的室外物体分类

    点云PCL免费知识星球,点云论文速读. 标题:最新开源LiDAR数据集LSOOD:四种常见的室外物体分类 作者:Y Tian 来源:https://github.com/Tian-Yifei/LSOO ...

  2. 四种常见NLP框架使用总结

    作者:哈工大SCIR 狄东林 刘元兴 朱庆福 胡景雯 引言 随着人工智能的发展,越来越多深度学习框架如雨后春笋般涌现,例如PyTorch.TensorFlow.Keras.MXNet.Theano和P ...

  3. 移动设计需避免四种常见的用户体验失败

    为什么80%的码农都做不了架构师?>>>    此文是伊甸网转载移动设计顾问 Mariya Yao 的文章. 2012 年移动应用的下载量超过 300 亿,可是智能手机用户平均每周会 ...

  4. (转载)四种常见的 POST 提交数据方式

    转载地址:https://imququ.com/post/four-ways-to-post-data-in-http.html 四种常见的 POST 提交数据方式 HTTP/1.1 协议规定的 HT ...

  5. application/json 四种常见的 POST 提交数据方式

    四种常见的 POST 提交数据方式   HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT 这几种.其中 ...

  6. 四种常见的 POST 提交数据方式对应的content-type取值

    做前后端分离一般都有第3中 , 第一种 基本上jquery那年代用的了 第2种在需要传文件时用的 https://www.cnblogs.com/wushifeng/p/6707248.html 四种 ...

  7. JAVA对象JSON数据互相转换的四种常见情况

    这篇文章主要介绍了JAVA对象JSON数据互相转换的四种常见情况,需要的朋友可以参考下 1. 把java 对象列表转换为json对象数组,并转为字符串 复制代码代码如下:     JSONArray ...

  8. python 释放链表节点_四种常见链表的实现及时间复杂度分析(Python3版)

    四种常见的链表包括:单向链表,单向循环链表,双向链表,双向循环链表. 要实现的链表操作包括 - is_empty() 判断链表是否为空 - length() 求链表长度 - traversing() ...

  9. 安卓判断服务器返回的状态码,关于服务器返回的十四种常见HTTP状态码详解

    原标题:关于服务器返回的十四种常见HTTP状态码详解 HTTP状态码 状态码是由3位数字和原因短语组成的(比如最常见的:200 OK),其中第一位数字表示响应类别,响应类别从1到5分为五种 add:其 ...

  10. [转载] application/json 四种常见的 POST 提交数据方式

    参考链接: 关于/联系我 application/json 四种常见的 POST 提交数据方式 转载声明: 本文系转载自以下两篇文章: 四种常见的 POST 提交数据方式 作者: 沧海一滴 转载仅为方 ...

最新文章

  1. Veeam Backup Replication试用(四):配置同步(Replication Job)与恢复(Restore)
  2. 搜推广遇上用户画像:Lookalike相似人群拓展算法
  3. 在AndroidStudio中数据存储第三方数据管理Bmob的使用
  4. php laravel 调试,php – Xdebug laravel artisan命令
  5. java 保存图片_java实现保存文件图片以及读取
  6. python爬取商品信息_Python基于BeautifulSoup爬取京东商品信息
  7. Linux/Documentations: Kernel Livepatching
  8. Martin Fowler 经典软件著作合集
  9. 工程建设智能综合管控平台、建筑工地、智慧工地、工程建筑、数据分析中心、地图总览、项目筹划、进度管理、安全管理、质量管理、风险管理、经济管理、人事管理、分包管理、设备管理、材料管理、报表审阅、视频监控
  10. 【安全狐】robots协议详解(robots.txt)
  11. 计算机辅助设计与制造实例教程答案,计算机辅助设计实例教程= Example Course of Computer Aided Design...
  12. 【转】Knowledge-Distillation 知识蒸馏论文集合
  13. 本周内外盘行情回顾2022.4.24(下周提保、2205结束、节后美联储降息,预计波动加剧)
  14. 制作poster+香港打印流程
  15. 宽带IPTV单线复用
  16. JVM垃圾回收(二) 垃圾回收算法
  17. Linux原理与应用A卷广东科技,Linux操作系统应用选择题附答案(广东开放大学)...
  18. Material Design控件使用(一)
  19. 蓝牙路由器解决方案行业应用
  20. 关于Java字符串中拼接换行符

热门文章

  1. .NET : 如何动态根据一个业务实体类型创建XSD架构文件
  2. 几个清华和北邮学霸公众号,值得学习
  3. mongodb 笔记
  4. docker 容器通过桥接方式绑定到宿主机无法访问另外一个docker容器
  5. angular.js之作用域scope'@','=',''
  6. Django模板-模板标签
  7. 开源网站管理工具—Altman
  8. 阿里开发者们的第15个感悟:做一款优秀大数据引擎,要找准重点解决的业务场景... 1
  9. 聊聊spring for kafka对consumer的封装与集成 1
  10. 通过微信查找SAP TCODE代码