目錄
        1、升級到最新的PHP版本
        2、減少include 和 require
        3、使用局部變數來取代全域變數
        4、盡量使用靜態函數或方法
        如果有可能我們應該盡量使用功能或方法來定義為靜態的,即加上 static 標記,這樣有可能讓您可以執行好程式的速度。
        不要過分的依賴PHP的內存回收機制,程序中一些用不到的變量或者資源應該及時的釋放,我們可以使用其方法,或者我們可以使用其設定為null。另外,如果遇到其他和元件相關的資源更要特別注意,例如資料庫連線。
        在PHP中,字串通常使用單引號來包含,因為使用雙引號可能會產生字元轉義甚至會產生字元的的執行效率要比雙引號高。
        為了使用方便,某些程式設計師喜歡推薦@來封鎖錯誤訊息,但是這種做法會降低腳本的運行速度,不使用。
        為了能更好的管理代碼,現在比較大型的PHP程序都更傾向使用面向對象思想(OOP)來構建程序比較,太多類別庫也有可能產生大量的include 和require 操作,從而造成額外的開銷。因此,我們要根據實際情況合理使用OOP思想。這個問題同樣可以使用APC加速組件來緩解。
        在PHP中使用介面(inteerface)的成本非常高,且程式設計時盡量避免使用。類似的邏輯封裝我們通常可以使用抽象類別(abstract class)來取代。
        雖然,PHP語言的正則表達式功能非常強大,但我們需要知道它的執行成本同樣高昂,在盡量處理的情況下,應該在盡量使用PHP的字符函數來代替。
        任何資料的儲存都需要佔用系統的空間資源,所以盡量在可能的範圍內對資料例如,我們儲存IP位址時可以使用ip2long函數把IP位址轉換為整型資料來存儲,然後再透過long2ip函數還原。另外,對一些大數據還可以使用gzcompress 和 gzuncompress 進行壓縮和解壓。
        13、使用更有效率的函數
首頁 後端開發 php教程 PHP程式最佳化

PHP程式最佳化

Aug 08, 2016 am 09:28 AM
apc http nbsp php session

 PHP程式最佳化

        Php程式最佳化的內容比較多,以下重點介紹PHP程式碼最佳化、Session機制最佳化、使用快取中間件以及PHP程式碼快取系統(主要是APC加速)幾個部分。

       最佳化PHP程式碼

        掌握足夠的技巧之後,我們才能對PHP程式碼進行執行最佳化。當程式編碼工作完成之後,我們通常會讓一些比較資深的程式設計師來對程式碼進行審查,評估程式的品質並找出需要最佳化的點,這個過程也叫做 Code Review。以下我們來介紹一些比較常見的PHP程式設計技巧,以及 Code Review 過程中可能涉及的一些最佳化原則。

        1、升級到最新的PHP版本

        要知道,程式語言本身也是不斷發展的,新版本的語言通常包含語言本身的漏洞修補和效能最佳化。因此作為專業人士,我們需要定期關注新版本的出現,對於PHP來說,我們可以從官網 http://php.net/上獲取到所需資訊。

        2、減少include 和 require

        雖然PHP本身已經對這個問題做過一定的優化,但是在大量使用情況下有可能會造成性能的下降。這個過程可以採用安裝APC加速器組件的方法來緩解。

        3、使用局部變數來取代全域變數

        局部變數的速度是最快的,特別是在某些循環邏輯中,我們盡可能使用局部變數來運算的。至於為什麼不用全域變量,一方面是因為運作效率的問題,另一方面則是考慮到全域變數不易於2管理。      

        4、盡量使用靜態函數或方法

        有可能我們應該盡量使用靜態函數或方法

        如果有可能我們應該盡量使用功能或方法來定義為靜態的,即加上 static 標記,這樣有可能讓您可以執行好程式的速度。

        5、釋放那些不用的變量或資源

        不要過分的依賴PHP的內存回收機制,程序中一些用不到的變量或者資源應該及時的釋放,我們可以使用其方法,或者我們可以使用其設定為null。另外,如果遇到其他和元件相關的資源更要特別注意,例如資料庫連線。

        6、使用單引號替代雙引號來包含字串

        在PHP中,字串通常使用單引號來包含,因為使用雙引號可能會產生字元轉義甚至會產生字元的的執行效率要比雙引號高。

        7.使用@符號屏蔽錯誤會降低腳本運行速度

        為了使用方便,某些程式設計師喜歡推薦@來封鎖錯誤訊息,但是這種做法會降低腳本的運行速度,不使用。

        8、不要過度使用PHP的OOP

        為了能更好的管理代碼,現在比較大型的PHP程序都更傾向使用面向對象思想(OOP)來構建程序比較,太多類別庫也有可能產生大量的include 和require 操作,從而造成額外的開銷。因此,我們要根據實際情況合理使用OOP思想。這個問題同樣可以使用APC加速組件來緩解。

        9.使用抽象類別取代介面

        在PHP中使用介面(inteerface)的成本非常高,且程式設計時盡量避免使用。類似的邏輯封裝我們通常可以使用抽象類別(abstract class)來取代。

       10、使用正規表示式代價昂貴

        雖然,PHP語言的正則表達式功能非常強大,但我們需要知道它的執行成本同樣高昂,在盡量處理的情況下,應該在盡量使用PHP的字符函數來代替。

        11、盡可能的壓縮需要儲存的資料

        任何資料的儲存都需要佔用系統的空間資源,所以盡量在可能的範圍內對資料例如,我們儲存IP位址時可以使用ip2long函數把IP位址轉換為整型資料來存儲,然後再透過long2ip函數還原。另外,對一些大數據還可以使用gzcompress 和 gzuncompress 進行壓縮和解壓。

收到

  • 分支語句中switch...case 的效率高於if...elseif...else
  • 循環語句中foreach 的效率最高,for 其次,while 最低
  • 疊加語句語句中++$i(字首) 的寫法快於$i++(字尾)

        13、使用更有效率的函數

       PHP的函數來完成相同的函數來完成相同的函數。不過,不同函數的運作效率也有不同,我們在使用是需要注意,下面我們將一些常用函數進行比較。

  • 字符打印函數echo 快於print
  • 字符替換函數strtr 效率最高,str_replace 其次,prea_replace 正則替換最低
  • 數組查詢?可操作性、彈性最高,fsockopen 次之,
  • file_get_contents 和fopen 最低

      雖然,對於某些邏輯不是很複雜的程式來說,也許每次程式碼優化的效果並不是非常明顯,但是養成良好的程式設計習慣是非常重要的,這也是一般程式設計師和高階程式設計師之間的差別。上面所列並非所有的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教學有興趣的朋友有幫助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
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教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1249
24
PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP行動:現實世界中的示例和應用程序 PHP行動:現實世界中的示例和應用程序 Apr 14, 2025 am 12:19 AM

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP與Python:了解差異 PHP與Python:了解差異 Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP的持久相關性:它還活著嗎? PHP的持久相關性:它還活著嗎? Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP和Python:代碼示例和比較 PHP和Python:代碼示例和比較 Apr 15, 2025 am 12:07 AM

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP與其他語言:比較 PHP與其他語言:比較 Apr 13, 2025 am 12:19 AM

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

See all articles