`
student_lp
  • 浏览: 437222 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

常见的php运行方式

阅读更多

    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的4种常见运行方式_.docx

    总结来说,每种PHP运行方式都有其适用的场景和优缺点。CGI适合轻量级应用,但不适用于高负载环境;FastCGI提供更好的性能和资源利用率;APACHE2HANDLER适合Apache服务器上的Web应用;而CLI则为开发者提供了更大的...

    linux下独立程序执行php文件

    在Linux环境下,独立程序执行PHP文件是一个常见的需求,特别是在自动化脚本、服务器管理和持续集成等场景中。这里提到的"snail007-phprunner-0ce9948"可能是一个专为此目的编写的特定工具,允许你在不依赖系统PHP...

    linux下自动运行php或定时运行php

    总结来说,要在Linux下实现PHP脚本的自动或定时运行,可以结合shebang、文件权限设置和`cron`服务,或者根据PHP的运行模式选择合适的执行方式。无论哪种方法,都需要对Linux系统和PHP有一定的了解,以确保脚本能够...

    Win10下部署IIS,并运行php项目

    Win10下部署IIS,并运行php项目是一种常见的开发环境搭建方式。本文将详细介绍如何在Win10下部署IIS,并运行php项目。 知识点1:IIS的安装和配置 IIS(Internet Information Services)是微软公司开发的一种Web...

    tomcat 中运行php 环境的jar包

    在IT行业中,将PHP环境集成到Tomcat服务器中是一个常见的需求,这主要为了利用Tomcat的性能优势同时处理Java和PHP应用。标题提到的"tomcat 中运行php 环境的jar包"正是指这样的解决方案,通过特定的Java桥接技术实现...

    php运行环境傻瓜安装包

    【PHP运行环境傻瓜安装包】是一款专为初学者或非专业IT人员设计的便捷工具,旨在简化PHP在Windows系统上的部署过程。该安装包特别适用于已经安装了Internet Information Services (IIS) 的用户,通过它,用户可以...

    使用shell调用php脚本

    首先,确保你的Linux系统已经安装了PHP运行环境。你可以通过运行`php -v`命令来检查PHP是否已安装以及其版本。如果没有安装,可以使用包管理器(如`apt-get`或`yum`)进行安装,命令如下: 对于基于Debian的系统...

    php的4种常见运行方式

    总结以上内容,PHP的4种常见运行方式各有千秋,分别适用于不同的运行环境和需求。CGI适合跨平台且对性能要求不高的场景;FastCGI在处理高并发请求时表现更佳;Apache2HANDLER适合使用Apache作为Web服务器的场景,...

    iis下运行php

    ### iis下运行php #### 知识点一:FastCGI 在 IIS 上的应用 - **FastCGI 的概念**:FastCGI 是一种通用网关接口(CGI)的增强版本,允许长时间运行一个进程来处理多个请求,从而提高了性能。在 IIS 中,FastCGI ...

    PHP程序员招聘中的常见面试题

    PHP运行模式与数据库连接 #### 知识点解析 - **运行模式**:PHP可以以不同的模式运行,如Apache模块模式、CGI模式或CLI(命令行界面)模式。不同模式下,数据库连接的行为可能有所不同。 - **持久连接的优势**...

    Ubuntu crontab 定时执行php脚本文件

    Apache模块方式执行PHP脚本 如果PHP是以Apache模块方式安装的,则无需在脚本的第一行添加解释器路径。可以直接通过Crontab执行PHP脚本。步骤与CGI模式相似,但省略了添加解释器路径的步骤。 - **编辑Crontab文件*...

    提高PHP的运行效率的方法

    ### 提高PHP运行效率的方法详解 #### 一、引言 随着互联网的发展,越来越多的网站面临着高并发访问的情况。PHP作为一种流行的服务器端脚本语言,虽然具有开发快速、易用等特点,但在面对大规模访问时可能会遇到...

    PHP程序常见漏洞攻击分析

    ### PHP程序常见漏洞攻击分析 #### 一、全局变量攻击 **概述** PHP因其灵活性而广受欢迎,但也正因这种灵活性使得它成为攻击者的目标之一。全局变量是PHP中的一个特性,无需事先声明即可在程序中任何位置使用,这...

    php的4种常用运行方式详解

    综上所述,选择PHP的运行方式取决于应用场景的需求。CGI适合轻度负载的站点,FastCGI是平衡性能和资源的理想选择,APACHE2HANDLER适用于高流量网站,而CLI则在开发和自动化任务中发挥重要作用。了解这些运行方式的...

    PHP后台循环锁定文件.zip_PHP后台循环_php文件锁定_shell_锁定

    首先,PHP后台循环是指在PHP环境中,通过编写代码使程序在后台持续运行,而不是像常规请求那样执行完毕后立即终止。这种技术通常用于处理长时间运行的任务,如定时任务、数据同步或者监控等。在PHP中实现后台循环...

    PHP编程中的常见漏洞和代码实例

    Session在PHP中是用户会话管理的一种方式,但如果不当使用,可能会导致用户数据泄露。为了保护Session的安全,需要对Session的管理(如Session ID的存储和传输)做好安全措施。 六、数据类型和容易出错的函数使用...

    php常见的优化条件

    相比于 `time()` 函数,这种方式能够节省大量的执行时间。 #### 6. PCRE 与字符串处理函数的比较 正则表达式(PCRE)虽然功能强大,但在某些情况下使用标准字符串函数会更加高效。 **示例代码:** ```php $...

    PHP劫持跳转代码

    下面我们将详细探讨PHP劫持跳转的常见方式、如何检测与防止这类问题,以及如何处理已知的"PHP劫持跳转代码.php"文件。 1. **PHP跳转函数**: - `header()` 函数是PHP中最常见的实现跳转的函数,例如 `header(...

Global site tag (gtag.js) - Google Analytics