我們在編寫程序時,總是想要使自己的程序占用資源最小,運行速度更快,代碼量更少。往往我們在追求這些的同時卻失去了很多東西。下面我想講講我對PHP優化的理解。優化的目的是花最少的代價換來最快的運行速度與最容易維護的代碼。
進行大范圍的優化,而不是死啃某些程序代碼
我這里所說的優化,基本上都是從服務器,Apache,數據庫這些方面來進行的優化,而并不是對你的PHP代碼加以改進從而提高程序的運行速度,因為比起你將程序中的正則優化為字符串處理函數從而提升程序速度來說,在大范圍內進行的優化所需要的代價要比這個小的多,而獲得報酬卻要豐厚的多。
在非代碼處進行優化有以下好處:
1、通常情況下能夠大大提高效率
2、不會危及到代碼的完整性
3、能夠快速部署
緩存技術
下面來說說常用的緩存技術,通過這些緩存技術能夠大大的提高效率
在說到緩存技術的時候不得不提到memcached ,memcached是高效、快速的分布式內存對象緩存系統,主要用于加速 WEB 動態應用程序。
Memcached的原理
memcached 是以守護程序方式運行于一個或多個服務器中,等待接收客戶端的連接操作,客戶端可以由各種語言編寫(例如PHP)。PHP 等客戶端在與 memcached 服務建立連接之后,接下來的事情就是存取對象了,每個被存取的對象都有一個唯一的標識符 key,存取操作均通過這個 key 進行,保存到 memcached 中的對象實際上是放置內存中的,并不是保存在 cache 文件中的,這也是為什么 memcached 能夠如此高效快速的原因。
說完memcached,下面來說說常用的緩存方法
1、編譯與OPCODE緩存
因為PHP是解釋型的語言,所以每個PHP文件在運行的時候都需要編譯后再執行,同一個文件,不同的用戶訪問,或者同一個用戶不同時間訪問同一個文件,每次都需要重新編譯然后運行,這樣就耗費了大量時間。
通過編譯緩存每個文件在修改之后只編譯一次這樣就減少了文件IO操作,用戶訪問后機器指令直接從內存中取出并執行而不是硬盤中讀出。
最常見的PHP編譯緩存工具有:APC,Accelerator,xcache
2、全局頁面緩存– Squid Cache
Squid Cache(簡稱為Squid)是一個流行的自由軟件(GNU通用公共許可證)的代理服務器和Web緩存服務器,Squid作為網頁服務器的前置cache服務器通過緩存相關請求來提高Web服務器的速度。
3、局部緩存之SQL緩存
在大多數應用程序中主要的瓶頸往往可以追溯到數據庫的操作中,一般都是因為復雜的數據庫查詢而耗費了大量時間,而SQL緩存可以大大降低復雜查詢造成的負荷。
SQL緩存的例子(使用了memcached擴展)
代碼片段:
- $key = md5(“some sort of sql query”);
- if (!($result = memcache_get($key))) {
- $result = $pdo->query($qry)->fetchAll();
- // 緩存查詢結果一小時
- memcache_set($key, $result, NULL, 3600);
- }
新聞熱點
疑難解答