目錄
一、IO 操作
二、中间件代理
首頁 後端開發 php教程 PHP 网站开发中网站性能分析

PHP 网站开发中网站性能分析

Jun 20, 2016 pm 01:02 PM
php網站

PHP 开发中的外围资源性能分析

首先,后端外围资源,是指跟 PHP 运行过程中与语言本身无关的网络与 IO 操作、存储服务、中间件代理、缓存和数据库访问等,在本文中,我们先分析 IO 操作和中间件服务。

为什么外围资源的性能分析,要以以上三者分析为主?我们可以看如下国内专业的性能监控工具 OneAPM 的 PHP Web 应用后台截取下来的总览图,通过这个图可以看到,数据库所花费的时间在总 PHP 响应时间中,占据着 60% 甚至更大的比重,而 Memcached 缓存服务,在这张图里所占的响应时间,几乎看不见。

一、IO 操作

PHP 语言本身尽管有性能的差异,但是从对 PHP 的性能微观分析也可以看出,如果只执行单次操作,实际中这种差别是非常小的,前面的实验中,十万次以上操作,才有百 ms 级的差别,因为 PHP 语言本身操作的是内存,一次内存访问,大约在 50ns 左右。而 IO 操作,则是磁盘访问,一次磁盘访问所费时间在 5ms 以上。仅从这个数量级看是 10 万倍的差距,实际上,根据实验,也有百倍级的差距(顺序访问和随机访问差距巨大,实际中两者同时进行,还会有磁盘缓存等)。

所以对比语言本身,IO 成为瓶颈的可能性更大。首先看一下,IO 操作带来的性能差别。

一个 PHP 脚本,通过 PHP 命令方式运行

当使用如下命令清空磁盘缓存后:

echo 3 | sudo tee /proc/sys/vm/drop_caches代码一模一样,但是运行时间却是正常运行时间的 6 倍。当然这个时间的慢,并不仅仅是由于程序本身的 IO 操作导致,而更大的慢的因素是在 CGI 模式下,PHP 脚本的每一次运行都需要加载所有模块,这个加载,也伴随着大量的 IO 操作。
登入後複製

 

再做一个实验,完全同样功能的两个页面,一个采用了 MVC 的方式,把头部,尾部拆开成独立的模板(并未使用模板引擎),中间逻辑也使用独立的 Model 类来处理。另一个只 require 了宏定义和数据库操作两个文件。

使用命令ab -c 40 -n 1000 http://xxxxx/0929/zuche/carlist.php 进行压力测试,

在这个页面中,MVC 版本所费时间要多 6-8ms 左右。虽然只是多增加了几个文件包含,但是明显增加了请求延时,如果文件操作本身更加复杂,比如文件上传、检测、转换,则延时会增加一个数量级以上。在实际的生产使用中,也不是说有了文件操作,就一定会产生大的延时,因为就像本例的 require 而言,由于磁盘缓存等的存在,延时的影响已降低很多。

二、中间件代理

在正式使用中间件之前,我们先对比一下,使用数据库与不使用数据库的差别,同样是上面的这个例子,我们把数据结果集,从数据库获取转换成为直接的结果数组设置,为了结构化清楚,采用 MVC 这一版。同时为了更显著对比上一轮测试结果,同时也消除语言本身的一些慢的因素,在本轮实验中,我们采用 PHP7,得到结果是令人吃惊的。 如下图是带有数据库连接和数据读取的版本,PHP 扩展使用的是 mysqli。

由于本页面,只有一次数据库操作,页面结构也比较简单,语言本身的影响因素非常大,PHP7 下速度有两倍以上提升,原来平均响应时长为 37-40ms,现在则为 14ms。

即使如此,不读取数据库时,有 4ms 的差距,尽管数目上不大,但是对于一个总响应时长只有 14ms 的应用,这 4ms 已经很显著了,而这只是一个数据库查询操作。

接下来看一下,当增加一层数据库中间件时,效率又有怎么样的变化呢?由于笔者所使用的中间件,目前并不支持 PHP7,所以我们还在老版 PHP 的基础上来比对。在同样的服务器压力下,使用了中间件的版本慢了一倍以上。如下图所示。

从这个例子可以看出来,原本 PHP 直接连数据库,取得数据的操作,增加了中间件之后,变了先到中间件,中间件再到数据库,返回亦如是,导致了速度的大幅度下降(这里已经剔除了中间件本身占用资源的因素,在原来直连的版本是 37-40ms 左右)。

这里也请读者不要误解,演示中间件使用速度下降的例子,并不是说为了说明中间件不好,在分布式环境下,使用中间件是非常必要的。而是说,程序的外部资源,往往是影响性能的重要因素,尤其是当外部资源的连接和数据获取本身速度达不到理想的结果时。

对于 IO 操作和中间件服务的分析就到这里,下篇将分析数据库给整个应用性能带来的影响。


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1320
25
PHP教程
1269
29
C# 教程
1249
24
優化網站SEO:偽靜態隱藏php後綴實踐 優化網站SEO:偽靜態隱藏php後綴實踐 Mar 07, 2024 pm 12:27 PM

眾所周知,優化網站的SEO是網站營運中非常重要的一環。而眾多網站所使用的動態網頁系統(如PHP)預設的URL帶有拓展名稱(.php、.html等)會影響網站的SEO效果。為了提升網站的最佳化效果,常見的做法是將動態URL改為偽靜態URL以隱藏拓展名,提高網站的使用者體驗和搜尋引擎排名。本文將以「偽靜態隱藏php後綴」為主題,介紹如何在PHP網站中實現此最佳化,並

哪些網站是用php開發的 哪些網站是用php開發的 Aug 11, 2023 am 11:03 AM

用php開發的網站有:1、Facebook,全球最大的社群媒體平台之一;2、Wikipedia,全球知名的線上百科全書;3、WordPress,廣泛使用的開源部落格和內容管理系統;4、Twitter,流行的社群媒體平台;5、Yahoo,全球知名的入口網站;6、Flickr,線上圖片託管與分享平台;7、LinkedIn,專業社群媒體平台。

帝國cms模板開發方法是什麼 帝國cms模板開發方法是什麼 Apr 17, 2024 am 12:09 AM

帝國cms模板開發方法包括:1. 了解模板結構;2. 修改模板程式碼;3. 使用標籤和變數;4. 建立自訂函數;5. 使用CSS和JS;6. 使用模板模組;7. 偵錯和測試。

哪些網站是用php做的 哪些網站是用php做的 Aug 11, 2023 am 10:55 AM

用php做的網站有:1、Facebook,全球最大的社群媒體平台之一;2、Wikipedia,一個全球用戶共同編輯的線上百科全書;3、WordPress,一個流行的開源部落格和內容管理系統;4、 Slack,一款廣泛使用的團隊協作工具;5、Magento,一款功能強大的開源電子商務平台;6、Etsy,一個面向手工藝品和獨立設計師的線上市場。

php搭建一個簡單的網站 php搭建一個簡單的網站 Mar 22, 2024 pm 03:04 PM

建立一個 PHP 網站涉及以下步驟: 1. 準備環境,安裝 PHP 開發環境和建立網站根目錄。 2. 建立基本文件結構,包括首頁 index.php 和其他所需文件。 3. 撰寫首頁內容,使用 HTML 和 PHP 建立頁面結構和動態產生內容。 4. 新增其他頁面,建立其他 PHP 檔案處理頁面內容。 5. 連接資料庫(可選),使用 PHP 連接資料庫並操作資料。 6. 設計樣式和互動效果,使用 CSS 和 JavaScript 增強網站美觀和互動性。 7. 部署網站,將網站檔案上傳到伺服器或

如何使用安全編碼實務保護PHP網站? 如何使用安全編碼實務保護PHP網站? Aug 20, 2023 pm 06:05 PM

如何使用安全編碼實務保護PHP網站?隨著網路的普及和發展,越來越多的網站採用PHP作為開發語言。然而,由於PHP的靈活性和易用性,也使得它容易受到各種安全威脅的攻擊。因此,在開發PHP網站時,必須應用安全編碼實踐來保護網站免受可能的攻擊。本文將介紹一些使用安全編碼實踐保護PHP網站的方法,並提供相應的程式碼範例。輸入驗證與過濾輸入驗證和過濾是保護PHP網站

如何使用加密演算法保護PHP網站的用戶資料? 如何使用加密演算法保護PHP網站的用戶資料? Aug 19, 2023 pm 04:00 PM

如何使用加密演算法保護PHP網站的用戶資料?隨著網路的快速發展,網站的使用者資料保護變得越來越重要。在PHP開發中,我們可以使用加密演算法來保護用戶資料的安全性。本文將介紹一些常用的加密演算法以及如何在PHP網站中使用它們來加密使用者資料。一、加密演算法的選擇對於PHP網站,我們可以選擇以下幾種常用的加密演算法來保護使用者資料的安全性:1.對稱加密演算法:此演算法使用相同的密

如何透過壓縮檔案提高PHP網站的存取速度? 如何透過壓縮檔案提高PHP網站的存取速度? Aug 25, 2023 pm 03:49 PM

如何透過壓縮檔案提高PHP網站的存取速度?摘要:隨著網路的發展,網站的存取速度變得越來越重要。而在PHP網站中,壓縮檔案是常見的提速方法。本文將介紹如何透過壓縮檔案來提高PHP網站的存取速度,並給出相應的程式碼範例。一、為什麼壓縮檔案可以提高存取速度?在瀏覽網頁的過程中,瀏覽器需要下載並載入網頁所需的各種文件,包括HTML、CSS、JavaScript文

See all articles