首页技术php几种运行模式?php设计模式六大原则

php几种运行模式?php设计模式六大原则

编程之家2026-06-01669次浏览

大家好,php几种运行模式相信很多的网友都不是很明白,包括php设计模式六大原则也是一样,不过没有关系,接下来就来为大家分享关于php几种运行模式和php设计模式六大原则的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

php几种运行模式?php设计模式六大原则

php有几种运行模式最常用的是那种

php一共分为五大运行模式:包括cgi、fast-cgi、cli、isapi、apache模块的 DLLCGI

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

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

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

1、Web Server启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)

2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个php-cgi)并等待来自Web Server的连接。

php几种运行模式?php设计模式六大原则

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

4、 FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。在CGI模式中,php-cgi在此便退出了。在上述情况中,你可以想象CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。APACHE2HANDLER

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

apache模块的DLL:

该运行模式是我们以前在windows环境下使用apache服务器经常使用的,而在模块化(DLL)中,PHP是与Web服务器一起启动并运行的。(是apache在CGI的基础上进行的一种扩展,加快PHP的运行效率)ISAPI:

ISAPI即Internet Server Application Program Interface,是微软提供的一套面向Internet服务的API接口

php几种运行模式?php设计模式六大原则

一个ISAPI的DLL,可以在被用户请求激活后长驻内存,等待用户的另一个请求,还可以在一个DLL里设置多个用户请求处理函数,此外,

ISAPI的DLL应用程序和WWW服务器处于同一个进程中,效率要显著高于CGI。(由于微软的排他性,只能运行于windows环境)cli:

cli是php的命令行运行模式,大家经常会使用它,但是可能并没有注意到(例如:我们在linux下经常使用“php-m”查找PHP安装了那些扩展就是PHP命令行运行模式;有兴趣的同学可以输入php-h去深入研究该运行模式)总结:

每种运行模式都有自己的优缺点,没有绝对的好与坏,主要是看大家处理何种环境。

请问php在apache下运行有几种模式,区别是什么该怎样设置,谢谢

Windows下有两种方法使 PHP工作于 Apache 2.0.x之中。一种是使用 CGI可执行程序,另一种是适用 Apache模块的 DLL。不管哪种都需要编辑 httpd.conf来配置 Apache支持 PHP并重新启动服务器。

注:记住在 Windows下给 Apache的配置文件中加入路径值的时候,所有的反斜线例如 c:\directory\file.ext必须转换成正斜线,如 c:/directory/file.ext。

以 CGI方式安装

需要将以下三行加入到 Apache的 httpd.conf配置文件中以设定 CGI:例子 6-5. PHP在 Apache 2.0中的 CGI方式

ScriptAlias/php/"c:/php/"

AddType application/x-httpd-php.php

#对 PHP 4用这行

Action application/x-httpd-php"/php/php.exe"

#对 PHP 5用这行

Action application/x-httpd-php"/php/php-cgi.exe"

警告

如果使用 CGI方式安装,则服务器对于某些可能的攻击是开放的。请阅读 CGI安全一章以学习如何防御这些攻击。

以 Apache模块方式安装

需要将以下两行加入到 Apache的 httpd.conf配置文件中以设定 Apache 2.0的 PHP模块:例子 6-6. PHP在 Apache 2.0中的模块方式

#对 PHP 4用这两行:

LoadModule php4_module"c:/php/php4apache2.dll"

#别忘了从 sapi目录中把 php4apache2.dll拷贝出来!

AddType application/x-httpd-php.php

#对 PHP 5用这两行:

LoadModule php5_module"c:/php/php5apache2.dll"

AddType application/x-httpd-php.php

#配置 php.ini的路径

PHPIniDir"C:/php"

注:记得用自己 PHP实际所在的路径替换掉上例中的 c:/php/。要留意在 LoadModule指令中用的是 php4apache2.dll或 php5apache2.dll,而不是 php4apache.dll或 php5apache.dll,后者是设计用于 Apache 1.3.x的。

注:如果要使用内容协商机制,请阅读有关 FAQ。

警告

不要在安装中混合使用来自不同 PHP版本的 DLL。使用下载回来的 PHP版本中所提供的 DLL和扩展库是唯一选择。

php中,什么是单一模式优缺点

php单一入口模式可谓是现在一种比较流行的大型web应用开发模式,比如当前比较流行的一些php开发框架,zend,thinkphp,qeephp,还有cakephp

等他们都是采用的单一入口模式的。本文将就什么是单一入口模式,单一入口模式有哪些优点以缺点做一下研究。

什么是单一入口?

在解释什么是单一入口之前,先说说与之对应的多入口。多入口即通过访问不同的 php文件运行对应的功能。比如刚开始学习 php

的时候,我们做一个项目通常都会如下这样做:

index.php-网站首页

list.php?page=5-内容列表页

info.php?id=12-内容详细页

login.php-用户登录页

对于这个项目来说,这其实就是一个多入口。

那么单一入口的应用程序就是说用一个文件处理所有的HTTP请求,例如不管是内容列表页,用户登录页还是内容详细页,都是通过从浏览器访问 index.php

文件来进行处理的,这里这个 index.php文件就是这个应用程序的单一入口。

php是如何实现单一入口的呢?

很简单,一般单一入口程序都是在访问index.php时附带一个特定的参数。例如:index.php?action=list就可以定义为访问内容列表页,而

index.php?action=info则可以定义为访问内容详细页等,具体实现代码如下:

//从url中取出action参数,如果没有提供action参数,就设置一个默认的'index'作为参数

$action=$_GET['action']==''?'index':$_GET['action'];

//根据$action参数调用不同的代码文件,从而满足单一入口实现对应的不同的功能

include('files/'.$action.'.php');

以上这个就实现了一个最简单的单一入口模式程序,当然真正的单一入口模式会比这个要复杂很多。但只要懂得如何合理组织各个功能的处理代码并遵循一定的步骤,也可以轻松的解决掉这个难题,下面就一个后台的例子来做一下说明:

比如我们现在要做一个新闻管理的后台。那么首先,对于应用程序的功能要做出一个合理的分解。例如后台的新闻栏目可能包含“添加新闻”、“编辑新闻”、“删除新闻”等多个功能。这时我们就可以将这一组逻辑上关联的功能组合到一个功能模块中,称为“新闻管理”模块。

按照上面的方法整理完应用程序的功能,我们就会得到多个功能模块,而每个模块又是由多个功能组成(实际上,即便不是单一入口应用程序,功能的整理也是必须的步骤)。

整理完功能后,我们就需要确定如何存放各个功能的代码。这里我推荐两种方式:

1、每个功能模块一个子目录,目录里的每一个文件就是一个功能的实现代码。

种方式的好处是每个功能的代码都互相隔离,非常便于多人协作。缺点是每个功能之间共享代码和数据不那么方便。例如新闻管理模块中的所有功能都需要一个“取

出新闻栏目记录”的功能,那么采用这种多个独立文件的组织方式,“取出新闻栏目记录”就只能写在另一个文件中,然后由需要该功能的文件include

进去。

2、每个模块一个文件,模块中的每个功能写成一个函数或者一个类方法。

好处不用多说了,非常便于共享代码和数据。缺点就是如果几个人同时改,容易发生冲突。不过借助版本控制软件和差异比较合并工具,冲突还是很容易解决的。

单一入口应用程序对应多入口有哪些优势呢?

一入口应用程序的所有http请求都是通过index.php接收并转发到功能代码中去的,所以在index.php里面就能完成许多实际工作(所有页面

都需要做的且都一样的工作)。比如进行集中的安全性检查,访问统计等等,如果不是单一入口,那么开发者就必须记得在每一个文件的开始加上安全性检查代码,

当然,你也许会说,多入口的安全性检查可以写到另一个文件中,然后include一下就可以了。但实际针对一个相对较大型一点的应用项目,在几十个文件中

保持头部的几个include都一致可不是一件让人省心的事。

与安全性检查类似。在入口里,我们还可以对url参数和post进行必要的检查和特殊字符过滤、记录日志、访问统计等等各种可以集中处理的任务。这样就可以看出,由于这些工作都被集中到了index.php来完成,可以减轻我们维护其他功能代码的难度。

单一入口应用程序的缺点?

任何事情都有两面性,单一入口应用程序也不例外。由于所有http请求都是访问 index.php,所以程序的 url

看起来不那么美观,特别是对搜索引擎来说不太友好。比如下面这个 url:

我们知道这种URl不太方便记忆,而且搜索引擎不认它是一个正常的 URL,当然是相比下面这种 URl来说的:

不过这个也不是什么大问题,可以采用url重写、PATHINFO等方式就可以轻松解决这个问题。

OK,单一入口模式就写这么多了,当然要想深刻理解单一模式,最好的办法还是自己尝试着用单一入口模式写一个小应用出来深刻体会一下。

本文地址:

文章到此结束,如果本次分享的php几种运行模式和php设计模式六大原则的问题解决了您的问题,那么我们由衷的感到高兴!

三角函数零基础入门,从零开始学懂三角函数表单标签(标签制作)