程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 學習PHP精粹,編寫高效PHP代碼之性能

學習PHP精粹,編寫高效PHP代碼之性能

編輯:關於PHP編程

一、采用基准測試,檢測代碼的性能

基准測試涉及Web應用程序時,通常指“壓力測試”,即在你的代碼中盡可能多地加載流量,然後衡量它的執行能力。

推薦兩種基准測試的工具:ApacheBench(ab)和JMeter。

要進行壓力測試,我們需要兩個東西:同時在線的用戶和大量的請求。使用這些工具後,很多同時運行的應用程序線程便代表了用戶。因此我們只需記住:並發線程=並發用戶。

1、ApacheBench超級簡單,通常包含了Apache安裝,或是作為Apache開發包的一部分——一個被稱為簡單ab的二進制文件。要使用ab,只需指定請求的總數(-n),以及並發線程的數量(-c),然後讓它開始工作。

例如:我們在這裡使用-n 1000 -c 20生成20個並發線程執行1000個請求。

$ ab -n 1000 -c 20 http://example.org/

ab使用參考:http://httpd.apache.org/docs/2.0/programs/ab.html

2、JMeter是另一個具備GUI的Apache項目,而且具備更多功能。若要使用JMeter,你需要創建一個測試計劃,添加線程組、添加采樣器、指定JMeter的配置、添加Cookie處理器這樣的其他選項、增加監聽器處理結果。

JMeter網站:http://jmeter.apache.org/

二、利用緩存提高代碼性能

1、對於Apache服務器,利用apc實現代碼緩存。

從PECL(PHP Extension Community Library,PHP擴展共享類庫)中獲取APC進行編譯,然後安裝該擴展。

$ pecl install apc

在這之後,根據設置,需要編輯php.ini文件並添加它:

extension = apc.so

重新啟動Apache,然後就可以了。

apc使用參考:http://www.php.net/manual/en/book.apc.php

2、對於Windows/IIS服務器,利用微軟的WinCache實現代碼緩存。

WinCache網站:http://www.iis.net/downloads/microsoft/wincache-extension

3、利用memcached實現會話數據緩存,memcached是基於內存的、群集友好的鍵/值對存儲。如果你啟用memcached擴展,就可以自動使用memcached代替磁盤存儲回話。

memcached網站:http://memcached.org/

memcached使用參考:http://www.php.net/manual/zh/book.memcached.php

安裝memcached:

$ pecl install memcache # Install ext/memcache
$ memcached -d -m 128 # Start memcached

 

設置php.ini:

session.save_handler = 'memcache'
session.save_path = 'tcp://localhost:11211'

 

三、進行程序概要分析,尋找問題在哪裡?

程序概要分析(profiling)是采用精確的時間或內存檢測代碼運行每個動作的行為。通過分析,找到問題的位置,然後進行優化。

我們有兩個常用的profiling工具:

1、由Derick Rethans編寫的可靠的Xdebug工具,並由KCachegrind或QCachegrind審核結果。

Xdebug網站:http://xdebug.org/

KCachegrind網站:http://sourceforge.jp/projects/freshmeat_kcachegrind/releases/

QCachegrind網站:http://sourceforge.jp/projects/freshmeat_kcachegrind/releases/

2、新開發的XHProf工具,是來自Facebook的一個應用,由Paul Reinheimer編寫XHGui Web前段部分。

XHProf網站:http://pecl.php.net/package/xhprof

XHGui網站:https://github.com/perftools/xhgui

 

總結:

首先我們要解決性能下降這個最大的難題,這樣便可獲得整體性能的更好提升。如果一個SQL查詢花費10秒,而你將它的執行速度提高了50%,這樣你為自己節省了5秒;然而,如果執行一個PHP函數花費5秒,你同樣將它的執行速度提高了50%,你實際上卻只節省了半秒鐘。在某些時候,你將受到硬件性能的絕對限制,以我們的經驗你更有可能受到磁盤或網絡I/O的限制,而不是CPU或RAM的限制。這時你需要開始在多台計算機上縮放應用程序。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved