您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP如何处理Web请求流程

2024/3/5 2:55:14发布101次查看
php世界里涌现了很多开发框架,比如laravel、thinkphp等,但不论何总框架,他们在处理web请求时的模式都是一样的,本文首先阐述php开发web应用的基本架构,然后分别分析laravel和thinkphp在处理web请求时的处理流程。
php开发web应用的基本架构
php开发web应用时所以的请求需要指向具体的入口文件。webserver是一个内容分发者,他接受用户的请求后,如果是请求的是css、js等静态文件,webserver会找到这个文件,然后发送给浏览器;如果请求的是/index.php,根据配置文件,webserver知道这个不是静态文件,需要去找php解析器来处理,那么他会把这个请求简单处理后交给php解析器。
webserver会依据cgi协议,将请求的url、数据、http header等信息发送给php解析器,接下来php解析器会解析php.ini文件,初始化执行环境,然后处理请求,再以cgi规定的格式返回处理后的结果,退出进程。web server再把结果返回给浏览器。整个处理过程如上图所示。
fastcgi
这里的php解析器就是实现了cgi协议的程序,每次请求到来时他会解析php.ini文件,初始化执行环境,这就导致php解析器性能低下,于是就出现了cgi的改良升级版fastcgi。fastcgi是一种语言无关的协议,用来沟通程序(如php, python, java)和web服务器(apache2, nginx), 理论上任何语言编写的程序都可以通过fastcgi来提供web服务。它的特点是会在动态分配处理进程给请求,以达到提高效率的目的,大多数fastcgi实现都会维护一个进程池。fastcgi会先启一个master进程,解析配置文件,初始化执行环境,然后再启动多个worker进程。当请求过来时,master进程会这个请求传递给一个worker进程,然后立即接受下一个请求。而且当worker进程不够用时,master可以根据配置预先启动几个worker进程等待;当然空闲worker进程太多时,也会自动关闭,这样就提高了性能,节约了系统资源。整个过程fastcgi扮演着对cgi进程进行管理的角色。
php-fpm
php-fpm是一个专门针对php实现了fastcgi协议的程序,它实际上就是一个php fastcgi进程管理器,负责管理一个进程池,调用php解析器来处理来自web服务器的请求。php-fpm能够对php.ini文件的修改进行平滑过度。
新建一个helloworld.php文件,写入下列代码
<?php echo"helloworld,"; echo"this is my first php script."; echophpinfo(); ?>
配置好webserver和php-fpm等php运行环境后,在浏览器中访问该文件就可以直接得到输出。
基于php的web框架
php web框架是
基于某模式将php开发常用功能封装实现使开发者快速开发的工具
它主要的任务包括:
代码重用:定义包、类、函数的放置和加载规则,建议直接整合composer及其autoload特性。
请求的分发管理:这个就是路由,rest风的框架喜欢rewrite,简单的一点的框架主要通过参数来定位模块和方法所在。
配置文件管理:加载和动态加载配置数据
错误和异常管理:异常捕捉、错误日志记录以及错误码规范。
layout和模板引擎:如何规划页面布局、widget如何重用、ajax页面如何结合、过期session如何重定向;数据和模板怎么渲染成html,是否压缩和设置过期头。
数据库:如何融入控制器;支持什么样的driver;考虑主从分离的扩展性;以及是否使用orm
php作为世界上最好的编程语音,被广泛的运用到web开发中。因为其语法和c类似,有着非常平缓的学习曲线,越来越多的人使用php进行web产品的快速开发。php世界里也涌现了很多开发框架,比如laravel、thinkphp等,但不论何总框架,他们在处理web请求时的模式都是一样的,本文首先阐述php开发web应用的基本架构,然后分别分析laravel和thinkphp在处理web请求时的处理流程。
php开发web应用的基本架构
php开发web应用时所以的请求需要指向具体的入口文件。webserver是一个内容分发者,他接受用户的请求后,如果是请求的是css、js等静态文件,webserver会找到这个文件,然后发送给浏览器;如果请求的是/index.php,根据配置文件,webserver知道这个不是静态文件,需要去找php解析器来处理,那么他会把这个请求简单处理后交给php解析器。
webserver会依据cgi协议,将请求的url、数据、http header等信息发送给php解析器,接下来php解析器会解析php.ini文件,初始化执行环境,然后处理请求,再以cgi规定的格式返回处理后的结果,退出进程。web server再把结果返回给浏览器。整个处理过程如上图所示。
fastcgi
这里的php解析器就是实现了cgi协议的程序,每次请求到来时他会解析php.ini文件,初始化执行环境,这就导致php解析器性能低下,于是就出现了cgi的改良升级版fastcgi。fastcgi是一种语言无关的协议,用来沟通程序(如php, python, java)和web服务器(apache2, nginx), 理论上任何语言编写的程序都可以通过fastcgi来提供web服务。它的特点是会在动态分配处理进程给请求,以达到提高效率的目的,大多数fastcgi实现都会维护一个进程池。fastcgi会先启一个master进程,解析配置文件,初始化执行环境,然后再启动多个worker进程。当请求过来时,master进程会这个请求传递给一个worker进程,然后立即接受下一个请求。而且当worker进程不够用时,master可以根据配置预先启动几个worker进程等待;当然空闲worker进程太多时,也会自动关闭,这样就提高了性能,节约了系统资源。整个过程fastcgi扮演着对cgi进程进行管理的角色。
php-fpm
php-fpm是一个专门针对php实现了fastcgi协议的程序,它实际上就是一个php fastcgi进程管理器,负责管理一个进程池,调用php解析器来处理来自web服务器的请求。php-fpm能够对php.ini文件的修改进行平滑过度。
新建一个helloworld.php文件,写入下列代码
<?php echo"helloworld,"; echo"this is my first php script."; echophpinfo(); ?>
配置好webserver和php-fpm等php运行环境后,在浏览器中访问该文件就可以直接得到输出。
基于php的web框架
php web框架是
基于某模式将php开发常用功能封装实现使开发者快速开发的工具
它主要的任务包括:
代码重用:定义包、类、函数的放置和加载规则,建议直接整合composer及其autoload特性。
请求的分发管理:这个就是路由,rest风的框架喜欢rewrite,简单的一点的框架主要通过参数来定位模块和方法所在。
配置文件管理:加载和动态加载配置数据
错误和异常管理:异常捕捉、错误日志记录以及错误码规范。
layout和模板引擎:如何规划页面布局、widget如何重用、ajax页面如何结合、过期session如何重定向;数据和模板怎么渲染成html,是否压缩和设置过期头。
数据库:如何融入控制器;支持什么样的driver;考虑主从分离的扩展性;以及是否使用orm
相关推荐:
django用户认证系统(二)web请求中的认证
以上就是php如何处理web请求流程的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product