PHP如何處理Web請求流程

小云云
發布: 2023-03-22 12:42:02
原創
3487 人瀏覽過

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請求流程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!