认识PHP运行模式

PHP有五种运行模式,常见的有4种:

  1. CGI(通用网关接口/ Common Gateway Interface)
  2. FastCGI(常驻型CGI / Long-Live CGI)
  3. CLI(命令行运行 / Command Line Interface)
  4. LoadModule【Apache独有】
  5. ISAPI(Internet Server Application Program Interface)【IIS独有】

备注:在PHP5.3以后,PHP不再有ISAPI模式,安装后也不再有php5isapi.dll这个文件。要在IIS6上使用高版本PHP,必须安装FastCGI 扩展,然后使IIS6支持FastCGI。

查看当前运行模式
echo php_sapi_name();

CGI模式

介绍:

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

调用过程:Fork-And-Execute模式

用户请求 —> web服务器接收请求【常用Nginx、apache】—> fork CGI的子进程&处理请求 ----> 请求处理完毕,返回结果到web服务器&销毁子进程 —> web服务器返回结果给用户

图解:
在这里插入图片描述
优势:

作为PHP最早的运行模式,每次请求都独立处理,调用过程足够简单清晰,可控性强
进程间是隔离的,保证数据不会被污染

劣势:

每次请求都需要fork一个新的CGI子进程,假如同一时间并发请求一千,意味着就要fork一千个子进程,这就会导致几个问题:

  1. fork子进程需要时间,需要占用内存【copy-on-write】
  2. 子进程过多,会导致CPU将大量的时间花费在上下文切换上
  3. 每次请求需要重新加载相关资源

FastCGI模式

介绍:

FastCGI是CGI的升级版本,FastCGI像是一个常驻 (long-live)型的 CGI,在启动web服务器的时候载入FastCGI进程管理器【PHP-FPM、IIS ISAPI、Apache Module】,当有请求过来的时候,web服务器只需要交给FastCGI进程管理器处理即可。
调用过程:以 PHP-FPM 为例

web服务器启动的时候 启动 PHP-FPM master进程(主要负责分配请求给空闲的自子进程处理)以及一定数量的fast-cgi子进程(负责处理请求)。 PHP-FPM master进程管理一个进程池,池里有若干个fast-cgi子进程,每个fast-cgi子进程单独处理一个请求,互不干涉。

用户请求 —> web服务器接收请求【常用Nginx、apache】—> 检测到是PHP请求&转发给FPM master进程 —> FPM master进程 指定空闲fast-cgi子进程处理请求 —> 子进程载入文件(如php.ini)及其他资源处理请求 —> 处理结束&清除资源,结果返回master & 子进程挂起,标记为空闲—> master 将结果返回web服务器 —> web服务器返回结果给用户

图解:
在这里插入图片描述
优势:

  1. 从稳定性上看,FastCGI是以独立的进程池来运行CGI,单独一个进程死掉,系统可以很轻易的丢弃,然后重新分配新的进程来运行逻辑
  2. 从安全性上看,FastCGI和宿主的web Server完全独立,FastCGI 不会影响web 服务器的运行【如果PHP-FPM处于关闭状态,则会返回502 bad gateway 给用户】
  3. 从性能上看,FastCGI把动态逻辑的处理从 web Server中分离出来,大负荷的IO处理还是留给宿主Server,这样宿主Server可以一心一意作IO【对于一个普通的动态网页来说, 逻辑处理可能只有一小部分,更多的是图片等静态资源的加载】

劣势:

一个fast-cgi子进程同一时间只能处理一个请求,所以网站的并发性能就受限于子进程数量
如果开启的进程过多,会导致CPU将大量的时间浪费在进程的上下文切换上。
每次请求fast-cgi子进程都需要重新加载相关资源,请求结束需要释放资源

CLI(命令行运行 / Command Line Interface)

简介:

php-cli模式属于命令行模式,对于很多刚开始学php就开始wamp,wnmp的开发者来说是最陌生的一种运行模式
该模式不需要借助其他程序,直接输入php xx.php 就能执行php代码
命令行模式和常规web模式明显不一样的是:
没有超时时间
默认关闭buffer缓冲
STDIN和STDOUT标准输入/输出/错误 的使用
echo var_dump,phpinfo等输出直接输出到控制台
可使用的类/函数 不同
php.ini配置的不同

PS:详见官方文档:https://www.php.net/manual/zh/features.commandline.php

LoadModule(Apache独有)

简介:
模块模式是以mod_php5模块的形式集成,此时mod_php5模块的作用是接收Apache传递过来的PHP文件请求,并处理这些请求,然后将处理后的结果返回给Apache。
在Apache配置文件httpd.conf里,通常加的LoadModule php7_module “D:/…/php71/php7apache2_4.dll”起到的作用就是这个

调用过程:

用户请求 —> Apache 服务器 —> 调用mod_php5模块处理请求 —> 返回请求结果给Apache —> Apache 返回结果给用户

图解:
在这里插入图片描述

ISAPI(Internet Server Application Program Interface)

简介:

在PHP5.3以后,PHP不再有ISAPI模式,安装后也不再有php5isapi.dll这个文件。要在IIS6上使用高版本PHP,必须安装FastCGI 扩展,然后使IIS6支持FastCGI。故此处不做过多介绍

图解:
在这里插入图片描述

写在最后:

在互联网爆炸式发展的今天,绝大多数网站都需要考虑网站的高并发性能。Nginx由于其轻量和出色的并发性能等优点,越来越多的受到开发者的青睐。曾经火爆全网的 LAMP 组合已不是PHP开发者的第一选择,异军突起的 LNMP 组合已然成为 PHPer 的必修课,这导致基于 Apache 的LoadModule模式已越来越少被提及。
除此以外,用来写命令行脚本CLI模式和几乎绝迹的 ISAPI 模式显然不适合建设网站。
作为 CGI 加强版的 Fast-CGI 模式在继承了 CGI 简单、安全的基础上,使用PHP-FPM管理子进程,使得web服务器更加专注的处理I/O,PHP-FPM管理维护一个进程池,可提前 fork 一定数量的子进程等待处理请求,既不用在请求到来时才fork子进程,也不用在请求结束时就销毁子进程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHPWindForumsv7.3是一套采用PHP+MySQL方式运行的开源软件程序,可以帮助您轻松搭建并管理论坛。 PHPWindForumsv7.3利用了SNS的特性结合现有的论坛模式,打造了全新的“圈子模式”。 什么是圈子模式? 这是一个以论坛体系为基础的应用,在传统行为的论坛系统中,融入了更多可自定义的交互规则,众多的智能交互构成了全新的用户体验和应用流程,让客户的被动寻找转变为主动获取,进而加快信息流通、加强信息价值,但,她仍然是您与您的用户所熟知的论坛系统。 PHPWind7终极版完善、修正及增加功能部分列表: 新增功能: 1.投票增加前置条件 2.会员评分设置细化 3.增加导航通栏公告位,增加频道页面广告控制 4.版主已阅增加设置主题分类的后续操作 5.更改默认编辑器为所见即所得 6.改进静态页的生成 7.整合当开启圈子模式时u页面和个人空间页面 8.圈子中的“朋友”增“我的访客”模块 9.查找朋友页面增加“可能认识” 10.版块logo上传功能 11.改进圈子模式下随便看看的页面布局 12.增加“帖子分享” 13.分享操作增加后续“推荐”的功能 14.改善“圈子”中相册的易用性 15.群组列表中增加“已加入该群的”提示,并显示退出链接 16.增加各个文字输入框输入字数动态提示 17.默认风格增加开关 18.圈子中头像尺寸控制优化 19.系统头像改为直接在页面中列表显示 20.好友列表时间改为好友最近登录时间 21.分类名称和群组名称分开 22.未登录状态圈子首页导航选中,并且连接改为?m=o 23.增加头像字段长度 24.圈子中好友搜索形式改进 25.动态和分享中用户头像和群组加上超链接 26.改进浏览和发帖弹出框的弹出位置和样式 27.改进版块收藏的各个细节,并增加删除功能 28.圈子中添加日志app 29.圈子好友列表分页 30.后台热榜缓存更新改进 31.群组讨论区帖子删除编辑操作 32.图片的水印改进 33.增加更具发帖量限制发带有链接地址的帖子 34.增加我的主题按发帖时间和回复时间排序 35.改进积分管理-充值描述不清楚导致理解歧义 36.改进社区模式下的页面布局
PHPWindForumsv7.3是一套采用PHP+MySQL方式运行的开源软件程序,可以帮助您轻松搭建并管理论坛。 PHPWindForumsv7.3利用了SNS的特性结合现有的论坛模式,打造了全新的“圈子模式”。 什么是圈子模式? 这是一个以论坛体系为基础的应用,在传统行为的论坛系统中,融入了更多可自定义的交互规则,众多的智能交互构成了全新的用户体验和应用流程,让客户的被动寻找转变为主动获取,进而加快信息流通、加强信息价值,但,她仍然是您与您的用户所熟知的论坛系统。 PHPWind7终极版完善、修正及增加功能部分列表: 新增功能: 1.投票增加前置条件 2.会员评分设置细化 3.增加导航通栏公告位,增加频道页面广告控制 4.版主已阅增加设置主题分类的后续操作 5.更改默认编辑器为所见即所得 6.改进静态页的生成 7.整合当开启圈子模式时u页面和个人空间页面 8.圈子中的“朋友”增“我的访客”模块 9.查找朋友页面增加“可能认识” 10.版块logo上传功能 11.改进圈子模式下随便看看的页面布局 12.增加“帖子分享” 13.分享操作增加后续“推荐”的功能 14.改善“圈子”中相册的易用性 15.群组列表中增加“已加入该群的”提示,并显示退出链接 16.增加各个文字输入框输入字数动态提示 17.默认风格增加开关 18.圈子中头像尺寸控制优化 19.系统头像改为直接在页面中列表显示 20.好友列表时间改为好友最近登录时间 21.分类名称和群组名称分开 22.未登录状态圈子首页导航选中,并且连接改为?m=o 23.增加头像字段长度 24.圈子中好友搜索形式改进 25.动态和分享中用户头像和群组加上超链接 26.改进浏览和发帖弹出框的弹出位置和样式 27.改进版块收藏的各个细节,并增加删除功能 28.圈子中添加日志app 29.圈子好友列表分页 30.后台热榜缓存更新改进 31.群组讨论区帖子删除编辑操作 32.图片的水印改进 33.增加更具发帖量限制发带有链接地址的帖子 34.增加我的主题按发帖时间和回复时间排序 35.改进积分管理-充值描述不清楚导致理解歧义 36.改进社区模式下的页面布局
1、AJAX初步认识 AJAX的全称AsynchronousJavaScriptAndXML. AJAX2005年由Google发起并流行起来的编程方法,AJAX不一个新的编程语言,但它一个使用已有标准的新的编程技术。一种创建交互式网页应用的网页发技术。 使用AJAX可以创建更好,更快,更用户界面友好的Web应用。 AJAX技术基于Javascript和HTTPRequest. Ajax包含下列技术: 基于web标准(standards-basedpresentation)XHTML+CSS的表示; 使用DOM(DocumentObjectModel)进行动态显示及交互; 使用XML和XSLT进行数据交换及相关操作; 使用XMLHttpRequest进行异步数据查询、检索; 使用JavaScript将所有的东西绑定在。 2、使用Ajax的好处 1、通过异步模式,提升了用户体验 2、优化了浏览器和器之间的传输,减少不必要的数据往返,减少了带宽占用 3、Ajax引擎在客户端运行,承担了一部分本来由器承担的工作,从而减少了用户量下的器负载。 3、AJAX的特 Ajax可以实现动态不刷新(局部刷新) 就能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上那些没有改变过的信息。 4、XMLhttprequest对象。 Ajax的核心JavaScript对象XmlHttpRequest。该对象在InternetExplorer5中首次引入,它一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向器提出请求并处理响应,而不阻塞用户。通过XMLHttpRequest对象,Web发人员可以在页面加载以后进行页面的局部更新。 5、AJAX技术体系的组成部分有哪些? HTML,css,dom,xml,xmlHttpRequest,javascript 6、AJAX应用和传统Web应用有什么不同。 在传统的Javascript编程中,如果想得到器端数据库或文件上的信息,或者客户端信息到器,需要建立一个HTMLform然后GET或者POST数据到器端。用户需要击"Submit"按钮来或者接受数据信息,然后等待器响应请求,页面重新加载。 因为器每次都会返回一个新的页面,所以传统的web应用有可能很慢而且用户交互不友好。 PHP培训教程之AJAX技术全文共3页,当前为第1页。使用AJAX技术,就可以使Javascript通过XMLHttpRequest对象直接与器进行交互。 PHP培训教程之AJAX技术全文共3页,当前为第1页。 通过HTTPRequest,一个web页面可以一个请求到web器并且接受web器返回的信息(不用重新加载页面),展示给用户的还通一个页面,用户感觉页面刷新,也看不到到Javascript后台进行的请求和接受响应。 7、AJAX请求总共有多少种CALLBACK Ajax请求总共有八种Callback onSuccess onFailure onUninitialized onLoading onLoaded onInteractive onComplete onException 8.Ajax和javascript的区别 javascript一种在浏览器端执行的脚本语言,Ajax一种创建交互式网页应用的发技术,它利用了一系列相关的技术其中就包括javascript。 Javascript由网景发的一种脚本语言,它和sun的java语言没有任何关系的,它们相似的名称只一种行销策略。 在一般的web发中,javascript在浏览器端执行的,们可以用javascript控制浏览器的行为和内容。 9、在Ajax应用中信息如何在浏览器和器之间传递的 通过XML数据或者字符串 10、在浏览器端如何得到器端响应的XML数据。 XMLHttpRequest对象的responseXMl属性 12、XMLHttpRequest对象在IE和Firefox中创建的不同 有,IE中通过newActiveXObject()得到,Firefox中通过newXMLHttpRequest()得到10、介绍一下XMLHttpRequest对象的常用方法和属性。 open("method","URL")建立对器的调用,个参数HTTP请求可以为GET,POST或任何器所支持的您想调用的。 第二个参数请求页面的URL。 send()方法,具体请求 abort()方法,停止当前请求! readyState属性请求的状态有5个可取值0=未初始化,1=正在加载,2=以加载,3=交互中,4=完成 responseText属性器的响应,表示为一个串 reponseXML属性器的响应,表示为XML
PHPWindForums(php+mysql)高速论坛程序(gbk,big5,utf-8) PHPwind系列论坛是一套采用php+mysql数据库方式运行并可生成html页面的全新且完善的强大系统。产品支持多种编码选择:GBK,BIG5,及UTF8,支持各种语言文字。我们希望作为一个开源、共享的软件,PHPWind可以以其流畅的速度与高负载能力激起各位加入PHPWind阵营的热情,并共同打造专业品牌PHPWind.Net! PHPwindV7.3.2,是继PHPWind7.0之后的又一大创新之作。系统在传统论坛+社区模式的基础上又新增了“圈子”模式,站长可以根据个人喜好或实际情况在后台进行设置。新增的“圈子”模式,以及日记等功能,以原论坛体系为基础的应用,在传统论坛系统中,融入了更多可自定义的规则,以促进论坛成员之间的交互联系。 1.好友动态:显示好友在站内的一切动态,时刻关注好友,加深对好友的了解。 2.日记与记录:可以把日记写在论坛里,增加了互动,记录功能还可以和好友唠叨一下 3.相册:用相册记录自己的生活点滴,并共享于好友之间。让交互显得生动形象和具体。 4.分享:分享网页,视频,音乐,flash,好友等资源,看看最近都在流行些什么。 5.群组:用户可自己创建及加入不同类型的群组,邀请更多好友加入。在这里,菜鸟异或大虾,都可以对生活中的某些共同爱好或兴趣发起讨论,交流经验。 6.可能认识的人:将好友的好友推荐给你,扩充好友网络。 7.个人空间:显示自己的所有动作,让好友们知道你最近都做了什么。保持并加深好友间的了解度。 8.底部工具条,可及时发现在线好友并且可以及时发消息给好友,及时查阅最新短消息,及一些常用功能快捷通道。 PHPwindV7.3.2,从细节处着手新增后台管理操作记录功能、邮件检测功能、图片缩略预览、版主管理记录、重要页面(如帖子阅读页)用户信息弹出的内容、水印预览...等等众多功能,将带给大家良好的用户体验。 更多的功能期待你的发现,也可以前往PHPWind黑板报看新功能展示. 如果您在使用中遇到问题,可以前往PHPWind讨论区发帖询问,工作日官方技术人员提供解答! PHPWindForums下载地址:http://www.phpwind.com/download.php

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值