搜尋
首頁後端開發php教程PHP效能問題分析+最佳化

PHP效能問題分析+最佳化

Apr 19, 2019 pm 06:03 PM
php最佳化

這篇文章是關於PHP效能問題分析 最佳化,有興趣的朋友可以來了解一下喔!

什麼情況下,遇到了PHP效能問題?
    1 PHP語法使用的不恰當
    2 使用PHP語言做不了它不擅長做的事
    3 用php語言連結的服務不給力##   ##   14 PHP自身的短板
    5 我也不知道的問題


效能問題解析
        PHP的效能問題,佔整個專案效能問題的比例小於50%

        效能最佳化項目,不要侷限於僅最佳化PHP

    php語言等級的效能最佳化
             |
    php週邊問題的效能最佳化
            |
            |
#      與選擇壓力


##Apache Benchmark(ab)(自行下載)
    ab是Apache提供的壓力測試軟體,安裝apache伺服器時會自備此壓測軟體。


如何使用?
    ./ab -n1000 -c100 http://www.baidu.com/         -n請求數
                    url目標壓縮位址




PHP-壓力測試工具使用示範




    主要專注於每秒並發盡可能的多

    請求耗時的少

多重使用PHP自身能力

    最佳化:少寫程式碼,多使用PHP自身能力##       效能問題: 自身能力      程式碼冗餘較多,可讀性不佳,且效能低
    為甚效能低?
         PHP程式碼需要編譯解析為底層語言,此流程每次要求都會處理一遍,且開銷大。

    好的方法:
        多使用PHP內建變數\常數\函數

PHP自身能力效能測試程式碼準備

    
#php程式碼運算

##*.php ---Scanner---> Exprs -----Parser--->Opcodes---Exec--->Output




php內建函數之間的效能測試



    最佳化點:php內建函數的效能優劣

         說明: php內建函數,之間仍存在區塊慢差異
        好的建議: 多去了解PHP內建函數的時間複雜度


php內建函數之間的效能測試程式碼測試



    isset($arr[$i]); //平均50ms
    array_key_exists($i,$arr);//平均85ms


減少PHP魔法函數的使用

    狀況描述:  PHP提供的魔法函數,表現不佳
    為什麼效能低為了給PHP程式猿省事PHP語言為你做了很多

    好的方法盡可能規避使用PHP魔法函數




PHP 停用錯誤抑制符號

    @的實際邏輯
##        在程式碼開始前結束後增加Opcode 忽略報錯

    php -dv|d.active=1 -dv|d.execute=0 at.php

    只是想看並不是真的想執行


#PHP-合理的使用記憶體和正規表示式
    最佳化點:合理使用記憶體

    PHP有記憶體回收機制保底,但也請小心使用記憶體

   好的建議使用正則表達式

        正則表達式的回溯開銷較大,

    好的建議:
        利用字符串處理函數,實現相同邏輯


PHP-避免在循環內做運算

    最佳化點:避免在循環內做運算

    情境說明:
        循環內的計算式將會重複計算

    程式碼範例:
                    $str = "hello world";
   );        {
                //do something
           }


PHP-減少計算中運算子
PHP不適合做大數據量運算


PHP適合場景

    適合銜接Webserver與後盾服務,UI呈現


PHP-務必使用引號字串做鍵值

    PHP會將沒有引號的鍵值當作常數,產生查找常數的開銷

    嚴格使用引號的字串作為鍵值




#PHP週邊問題的分析與闡述



    PHP週邊都有什麼?

        linux運作環境  php   硬碟(檔案儲存)  資料庫(例如mysql) 快取網路
php週邊對PHP程式的影響分析

#減少檔案類別的操作

    常見PHP場景的開銷順序:

        讀寫磁碟讀寫資料庫讀寫記憶體讀寫網路資料

        讀寫入記憶體


#11212



筆筆網路資料



減少PHP發起網路請求    
    網路請求的坑:
        1 對方介面的不確定因素
  性
    最佳化網路請求

        1 設定逾時時間
            連線逾時200ms##         寫逾時   500ms
        
        2 將序列請求並行化

            1 curl_multi_*()
            2 使用swoole 
#  與定時的時間延長者為依定的時間決定的比例是依定的時間決定的比例curl_multi_add_handle 為curl批次會話中新增單獨的curl句柄
        curl_multi_close 關閉一組cURL句柄
      curl_multi_exec 位元組執行子使用的當前位元連接子#L#L.curl_multi_getcontent 如果設定了CURLOPT_RETURNTRANSFER,則回傳取得的輸出的文字流
        curl_multi_info_read 取得目前解析的cURL的相關傳輸資訊# #.     curl_multi_select 等待所有cURL批次中的活動連結
        curl_multi_setopt Set an option for the cURL multi handle
        curl_multi_strerror -#      擴充來做




壓縮PHP輸出的利弊


    壓縮php介面的輸出    如何壓縮?         使用Gzip即可
    利  為我們的資料輸出,可更快擷取資料
    弊  額外的資料
#    在什麼情況下做輸出內容的快取?
        多次要求,內容不變狀況


Smarty調優與重疊時間視窗想法

    Smarty開啟caching

    重疊時間視窗想法  
        序列:
            Process1 Process2 Process3 Process4

                 process2
                    process3
     一個任務不強烈依賴前一個任務的時候,可以使用重疊時間




PHP旁路處理方案



    一般普通的: x.php -> Process1 ->process2 ->process3 -> process4->
    
    旁路方案: x.php -> Process1 ->process2(同時) ->Process33 -> Process1 ->process2(同時) ->Process33) -> (同時) -->Process4->

推薦教學:
PHP影片教學


以上是PHP效能問題分析+最佳化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:博客园。如有侵權,請聯絡admin@php.cn刪除
PHP的目的:構建動態網站PHP的目的:構建動態網站Apr 15, 2025 am 12:18 AM

PHP用於構建動態網站,其核心功能包括:1.生成動態內容,通過與數據庫對接實時生成網頁;2.處理用戶交互和表單提交,驗證輸入並響應操作;3.管理會話和用戶認證,提供個性化體驗;4.優化性能和遵循最佳實踐,提升網站效率和安全性。

PHP:處理數據庫和服務器端邏輯PHP:處理數據庫和服務器端邏輯Apr 15, 2025 am 12:15 AM

PHP在數據庫操作和服務器端邏輯處理中使用MySQLi和PDO擴展進行數據庫交互,並通過會話管理等功能處理服務器端邏輯。 1)使用MySQLi或PDO連接數據庫,執行SQL查詢。 2)通過會話管理等功能處理HTTP請求和用戶狀態。 3)使用事務確保數據庫操作的原子性。 4)防止SQL注入,使用異常處理和關閉連接來調試。 5)通過索引和緩存優化性能,編寫可讀性高的代碼並進行錯誤處理。

您如何防止PHP中的SQL注入? (準備的陳述,PDO)您如何防止PHP中的SQL注入? (準備的陳述,PDO)Apr 15, 2025 am 12:15 AM

在PHP中使用預處理語句和PDO可以有效防範SQL注入攻擊。 1)使用PDO連接數據庫並設置錯誤模式。 2)通過prepare方法創建預處理語句,使用佔位符和execute方法傳遞數據。 3)處理查詢結果並確保代碼的安全性和性能。

PHP和Python:代碼示例和比較PHP和Python:代碼示例和比較Apr 15, 2025 am 12:07 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:輕鬆創建交互式Web內容PHP:輕鬆創建交互式Web內容Apr 14, 2025 am 12:15 AM

PHP可以輕鬆創建互動網頁內容。 1)通過嵌入HTML動態生成內容,根據用戶輸入或數據庫數據實時展示。 2)處理表單提交並生成動態輸出,確保使用htmlspecialchars防XSS。 3)結合MySQL創建用戶註冊系統,使用password_hash和預處理語句增強安全性。掌握這些技巧將提升Web開發效率。

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:12 AM

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

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)