成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

讓PHP網站跑的更快 如何優化PHP

開發 后端
PHP是一種執行起來非常迅速的編程語言,但是比起僅僅優化代碼來說仍然值得優化PHP本身。 本文主要介紹了優化PHP網站的方法,希望對你有幫助,一起來看。

PHP是一種執行起來非常迅速的編程語言,但是比起僅僅優化代碼來說仍然值得優化PHP本身。

本文我們將根據一些實效闡述為什么優化PHP本身要比優化代碼來的更貼切,以及為什么需要理解根據PHP在你的服務器上其他相關子系統的表現找出瓶頸并修復之。與此同時,我們也提到了如何優化您的PHP代碼來讓他們擁有更快的執行速度。

獲得高性能

當我們談及好的性能,往往不僅僅是指您的PHP代碼執行起來有多快。性能是一套在可量化評測和速度之間取出的平衡。僅僅依靠使用更少資源的代碼執行起來也許比在高速緩存中之行的代碼更慢,并且相同的一組(在高速緩沖中執行的)代碼可以在同時并發執行在一臺Web服務器上。

在下面的例子中,A.php算作一位盡可能跑得快的賽跑選手,而B.php是一個幾乎可以以同一慢速永遠跑下去的馬拉松選手。輕負荷情況下,A.php可以充分的快,但是當流量增加后,B.php的性能表現將僅僅降低一點點而A.php會垮掉。

流量表

讓我們來通過一個事實來驗證此說法更深遠的本質意義。假設我們需要讀取一個250K的文件并生成一個關于此文件的HTML概要。我們寫了兩個腳本來做同樣一件事:hare.php將一次性讀取整個文件到內存中,然后一步執行到位;而tortoise.php每次只讀取文件的一行,并且決不超過內容容量。結果Tortoise.php因為多次讀寫需要更多的系統回應而慢得多。"

程序每執行一次,hare.php需要0.04秒CPU執行時間和10Mb的內存,而tortoise.php需要0.06秒CPU執行時間和5Mb的內存。服務器共有100Mb實際內存容量并且其CPU有99%是空閑的。我們同時假定執行這樣一個簡單事件不產生內存碎片。

當有10各程序并發執行時,hare.php將發生內存溢出(10 ×10 = 100)。與此同時,tortoise.php仍將有50Mb空余內存可用!11個程序并發執行將使hare.php徹底“潰敗”因為它開始需要使用虛擬內存——執行速度有可能降低到其常規速度的一半以下;而且現在每一個單獨程序進程需要0.08秒CPU執行時間。而此期間,tortoise.php仍舊運行在其常規CPU執行時間——0.06秒!

以下表格中,執行得更快的PHP腳本使用粗體區分開來:

表格

如您在上例中看到的,獲得更好的性能不再僅僅是寫出執行起來更快的PHP程序。高性能PHP表現需要對底層硬件知識以及操作系統、軟件支持如Web服務器、數據庫等有一個良好認識和理解。

瓶頸

以上兩個例子讓我們看到了(性能)下降的瓶頸所在。當擁有無限大容量的內存時,hare.php的確是始終比tortoise.php快。但是,僅僅認為內存是PHP整體性能的瓶頸所在顯得過于單純——實際上遠不止這些:

(a) 網絡

你的網絡有可能是***的瓶頸所在。如果你有10M的帶寬——最多你只能獲得1M/秒的傳輸速度。如果假設每個PHP頁為30k,那么每秒僅僅只傳輸33頁就將使你的網絡帶寬達到飽和。更多導致瓶頸產生的因素包括頻繁訪問低速DNS,或者網絡設備僅能獲得十分有限的存儲。

(b) CPU

如果你監視一下你的CPU負荷情況,發送一個純靜態HTML頁面并不會增加CPU負擔——就像我們以上提到的,此時瓶頸在于網絡。當然啦,對于由PHP生成的復雜動態頁面,你的CPU速度自然將成為限制因素之一。擁有包含多個CPU的服務器或者一個服務器陣列將減輕因CPU帶來的影響。

(c) 共享存儲

共享存儲主要在通訊進程中發揮作用,或者是用于儲存公共資源(比如多個CPU間的緩存數據或代碼)。如果共享存儲分配不足,同樣將導致瓶頸的發生。

(d) 文件系統

訪問硬盤的速度至少比直接讀取內存要慢50到100倍。使用高速緩存將使情況有所好轉。然而低內存空間將適用于文件緩沖的內存(通常稱為虛擬內存)空間減少,進而導致整體性能下降。虛擬內存容易產生大量文件碎片,導致訪問硬盤速度下降。在Unix系統上使用大量鏈接標記同樣也會石訪問硬盤的速度下降。缺省Linux安裝模式下的默認硬盤訪問設置也是很不被看好的,因為它是為了兼容性而不是速度。必要時請使用hdparm命令來更改Linux硬盤配置。

(e) 進程管理

在某些操作系統上(比如說Windows系統)創建一個新的進程是很緩慢的操作。這意味著在這些操作系統上作涉及到進程創建的CGI應用會慢許多。這種時候在多進程模式下運行PHP將會有所改善。(注意:老版本PHP尚不支持多進程模式)

應避免你的服務器產生過多的無效進程。舉個例子,如果你的服務器是純Web服務,需關閉(設置是不安裝)X-Windows窗口系統。Windows系統上,應禁用微軟快速搜索(Office的一部分)和第三方屏保程序(通常會需要100%的CPU利用)。

有些程序你可以考慮刪除包括一些不常用的網絡協議、郵件服務、病毒掃描、(鼠標,紅外線端口)驅動程序等。Unix系統上,假定你通過SSH訪問你的服務器,那么你可以考慮去除:

telnetd,inetd,atd,ftpd,lpd,sambad模塊

用于收取郵件的sendmail模塊

NFS的映射表 

xfs,fvwm,xinit,X

你也可以通過修改啟動腳本(其路徑通常位于/etc/init* 或 /etc/rc*/init*)來實現禁用不同的啟動程序。
也可以檢查一下定期處理任務安排是否合理,看是否可以在服務器空閑期執行。

(f) 連接到其他服務器

如果你的服務器需要其他服務器提供的服務,此時有可能是其他服務器產生了瓶頸。最常見的就是一個很慢的執行諸多復雜查詢的數據庫服務器服務于很多其他服務器。

【編輯推薦】

  1. 在PHP語言中使用JSON
  2. PHP愛好者請堅定你們的信念!
  3. 提高PHP速度的幾種辦法
  4. PHP做好防盜鏈的基本思想 防盜鏈的設置方法
  5. 警惕 PHP程序員最易犯10種錯誤
責任編輯:于鐵 來源: LUPA開源社區
相關推薦

2015-06-25 10:06:31

PHP 7GCC PGO

2015-06-23 15:17:57

PHPGCCPGO

2009-12-03 11:11:57

PHP網站優化

2017-12-13 13:23:39

數據庫MySQL優化

2017-11-13 18:49:58

華為

2011-03-03 09:11:11

開源數據庫MySQLMysql數據庫開發

2009-12-03 16:30:24

PHP代碼解析損耗

2022-05-05 09:31:58

JOIN數據庫

2011-07-05 17:52:41

PHP

2012-04-12 11:28:04

2009-05-08 08:49:17

微軟Windows 7操作系統

2013-07-03 11:28:47

2011-05-30 10:46:40

PHP

2010-03-31 15:08:28

CentOS系統

2009-12-09 17:33:22

PHP性能優化

2014-12-02 14:05:09

OneAPM阿里云

2009-11-27 13:24:20

PHP代碼性能優化

2009-11-13 08:53:01

Windows 7BIOS優化

2011-07-06 10:27:32

ADSL

2011-07-06 10:48:12

ADSL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 九九热re | 日韩精品在线观看网站 | 国产欧美在线 | 久久99久久99久久 | 欧美一区二区三区免费在线观看 | 久久伊人一区二区 | 激情欧美一区二区三区 | 国产精品久久久久无码av | 精品亚洲一区二区 | 成人精品久久日伦片大全免费 | 日韩中字幕 | 中文字幕国产高清 | 欧美一级黄色网 | 国产成人免费观看 | 欧美一区二区三区一在线观看 | 精品视频亚洲 | 99re在线视频精品 | 蜜桃在线视频 | jizz亚洲人 | 欧美精品91| 精品国产91 | 国产一区二区在线视频 | 国产一区二区在线免费视频 | 一区在线观看视频 | 日干夜干 | 国产欧美一区二区三区在线看 | www.狠狠操 | 国产精品久久一区二区三区 | 亚洲成人精品久久 | 黄免费观看视频 | 天天综合网天天综合色 | 不卡一区| 高清人人天天夜夜曰狠狠狠狠 | 少妇诱惑av | 中文字幕一区二区三区乱码在线 | 日韩不卡一区二区 | 国产欧美日韩一区 | 国产精品国产a | 精品久久视频 | 亚洲成网 | 国产黄色大片 |