PHP程式最佳化
Php程式最佳化的內容比較多,以下重點介紹PHP程式碼最佳化、Session機制最佳化、使用快取中間件以及PHP程式碼快取系統(主要是APC加速)幾個部分。
最佳化PHP程式碼
掌握足夠的技巧之後,我們才能對PHP程式碼進行執行最佳化。當程式編碼工作完成之後,我們通常會讓一些比較資深的程式設計師來對程式碼進行審查,評估程式的品質並找出需要最佳化的點,這個過程也叫做 Code Review。以下我們來介紹一些比較常見的PHP程式設計技巧,以及 Code Review 過程中可能涉及的一些最佳化原則。
要知道,程式語言本身也是不斷發展的,新版本的語言通常包含語言本身的漏洞修補和效能最佳化。因此作為專業人士,我們需要定期關注新版本的出現,對於PHP來說,我們可以從官網 http://php.net/上獲取到所需資訊。
雖然PHP本身已經對這個問題做過一定的優化,但是在大量使用情況下有可能會造成性能的下降。這個過程可以採用安裝APC加速器組件的方法來緩解。
局部變數的速度是最快的,特別是在某些循環邏輯中,我們盡可能使用局部變數來運算的。至於為什麼不用全域變量,一方面是因為運作效率的問題,另一方面則是考慮到全域變數不易於2管理。
有可能我們應該盡量使用靜態函數或方法
5、釋放那些不用的變量或資源
6、使用單引號替代雙引號來包含字串
7.使用@符號屏蔽錯誤會降低腳本運行速度
8、不要過度使用PHP的OOP
9.使用抽象類別取代介面
10、使用正規表示式代價昂貴
11、盡可能的壓縮需要儲存的資料
收到
PHP的函數來完成相同的函數來完成相同的函數。不過,不同函數的運作效率也有不同,我們在使用是需要注意,下面我們將一些常用函數進行比較。
雖然,對於某些邏輯不是很複雜的程式來說,也許每次程式碼優化的效果並不是非常明顯,但是養成良好的程式設計習慣是非常重要的,這也是一般程式設計師和高階程式設計師之間的差別。上面所列並非所有的PHP程式設計技巧,況且要掌握這些技巧也不是一朝一夕所能完成的;所謂學海無涯,只有在學習和動手的過程中不斷總結積累,才能讓自己的編程能力更上一層樓。
PHP最佳化Session機制
實際上,Session會話的功能都可以在系統設定檔php.ini中設置,當然我們也可以使用 ini_set 函數(ini_get 取得配置)從程式上進行設定。
一般不建議啟用auto_start(session.auto_start:是否自動啟用) ,因為創建Session需要消耗系統資源,我們通常只會在需要用到Sesson時,才會使用session_start函數來開啟Session功能。其次,Session的有效期限需根據系統的情況而定。如果太長,有可能導致會話資料太多造成負載問題;而加入太短,也有可能因為會話建立過於頻繁而出現效能問題。系統預設的有效時間為1440秒,也就是24分鐘,在實際專案中我們通常會將這個時間設定在1-8小時之間。另外要注意的是,PHP Session 使用的預設儲存方式是檔案存儲,在php.ini中我們可以透過session.save_handle選線來選擇需要的儲存方式,但是使用檔案儲存方式的效率比較低,也不利於系統架構擴展,在實際項目中經常透過session_set_save_handler方法來設定Session回調接口,用於控制Session會話的邏輯,常見的儲存介質有資料庫、分散式快取伺服器等。
PHP Session 的最佳化想法。首先,每次創建Session時都會產生資源消耗,千萬不要想當然在全域設定檔中使用session_start 方法。其次,每次會話請求都需要確保帶上Session ID,因為服務端取得不到Session ID的話,將會重新建立一個。另外,選擇儲存方式時,盡量使用快速的儲存介質,例如快取伺服器Memcache(d)、Redis等。
使用快取中間件
的壓力。目前業界比較常用的快取中間件為 Memcache 和 Redis(兩者的環境搭建和用法以及區別,讀者請查找網絡資源,此處不做詳細介紹) 。根據實際項目中所使用的效果,快取中間件通常能大幅提高服務端的查詢速度。另外,Redis快取還可當作寫入佇列來使用,也就是先把資料寫入到Redis快取中,然後再轉存到資料中去。
使用APC加速
的程式碼
因此再上線時。我們還需要使用一些程式碼層級的快取來加速程式碼的執行。 🎜🎜🎜🎜🎜🎜 APC(Alternative PHP Cache,PHP程式碼快取系統)是非常好的PHP程式碼快取解決方案,透過快取和最佳化PHP中間碼(opcode)來提高PHP的執行效率。 🎜🎜🎜註:與APC 同等級的免費的PHP程式碼快取技術還有eAccelerator 和XCache( 安裝及差異:http://blog.cs.net/mossader/arto.net/dep.
最佳化資料傳輸
約 在通訊協定的一般設計原則中,一般性和間接性是最重要的。選擇JSON協定作為程式應用協定的基礎本身就是對系統的一種最佳化。
2、使用gzip壓縮
二數據本身的大小。對於HTTP協定來說,gzip是目前的主流壓縮演算法之一,大部分的HTTP伺服器都支援這種壓縮演算法(關於Apche、Nginx 設定gzip壓縮功能模組,請 自行尋找網路資源)
註:本文摘錄自《Android 與PHP 發展最佳實務》第九章:服務端最佳化(有刪改)
以上就介紹了PHP程式優化,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。