<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # PHP性能如何優化 ## 變量 > 變量的性能排行:局部變量 \> 全局變量 \> 類屬性 \> 未定義的變量 1. 變量大小,注意變量大小是節約內存的最有效的手段。對于來自表單、數據庫和文件緩存的數據都需要控制變量的大小。因為`CPU`要處理的數據是來源于內存。 2. 變量的有效期,使用`unset()`函數注銷不需要的變量是一種好習慣,將一些不需要的變量立即注銷可提高內存的使用率。 3. 變量類型,初始化變量請注意其變量類型,一個變量在執行過程中,最好只有一種類型狀態。 4. 臨時變量,是處理業務邏輯的臨時存儲,這些都是需要消耗內存的。如果臨時變量使用結束請立即注銷。 5. 靜態變量,對于一些需要由復雜業務產生的變量,如果在程序的執行過程中多次產生并使用,可以考慮使用靜態變量,減少程序的`CPU`執行次數。 ## 循環 1. 盡量減少循環的次數 2. 盡量減少循環嵌套的層次 3. 避免在循環內有過多的業務邏輯 4. 不要循環包含文件 5. 不要循環執行數據庫操作 6. 優先使用`foreach`,它比`for、while`效率更高 7. 不要把`count、strlen、sizeof`放入`for`循環條件語句中 8. 保持循環體內的業務邏輯清晰 ## 函數 1. 函數職責清晰,一個函數只干一件事,不雜糅過多的業務邏輯 2. 函數代碼體不超過20行,反之考慮拆分 3. 優先使用`PHP`內置函數 4. 常量與函數同時能干一件事,優先使用常量 例如: ``` ?phpversion() < PHP_VERSION ?get_class() < __CLASS__ ?is_null() < NULL ?// 等等。。。 ``` 5. `echo`的性能好于`print`,輸入多個變量的使用`echo $str1,$str2,$str3`,不用`.`連接符 6. 使用`$_SERVER['REQUEST_TIME']`替換`time()` 7. 字符串替換 ~~~ ?strtr() > str_replace() > preg_replace() > epreg() ~~~ 8. 發揮`trim`最大功效,替換`substr` ~~~ ?$file_path = trime($filename, '/').'/'; ~~~ 9. `isset/empty`雖然兩個函數功能有所差異,但在同樣情況下推薦使用`empty()` 10. `isfile/file_exists`兩個函數的功能有所不同,`file_exists`既可判斷文件是否存在,也可以判斷目錄是否存在,在同樣的情況下推薦使用`is_file` ## 文件 1. 減少文件包含數,減少磁盤`IO` 2. 使用完整路徑,或者容易轉換的相對路徑。避免在`include_path`查找 3. 文件的代碼行數不要超過2000行 4. `require_once/include_once`效率低于`require/include`,需要額外的去查看系統是否已經調用過這個文件,因為它們在一個`opcode`緩存下的調用非常慢。 5. 程序執行文件用`require/require_once`,緩存文件用`include/include_once`。`include`效率好于`require`。 6. 優化`spl`中的文件自動加載機制,參考`YII` 7. 類庫文件加載,是否考慮類是否已實例化,可考慮采用設計模式之單例模式 8. 文件讀寫的并發性 ## 面向對象 1. 控制實例的創建的數量 2. 優先使用常量、類常量 3. 優先使用靜態變量,靜態屬性 4. 類的結構合理 5. 面向接口編程 6. 封裝變化點 7. 依賴于抽象,不依賴于細節 8. 優先使用靜態成員 9. 類的接口清晰穩定,類的職責單一,類與類的通信合理 10. 使用常量的好處:編譯時解析,沒有額外的開銷,雜湊表更小,所以內部查找更快,類常量僅存在于特定的【命名空間】,所以雜湊名更短,代碼更干凈,使除錯更方便 ## 字符串 > 用單引號替代雙引號引用字符串;避免檢索字符串中的變量 ## 運算 1. 用`i += 1`代替`i = i + 1`,符合`C/C++`的習慣,效率還高 ## 數組 > 多維數組盡量不要循環嵌套賦值 ## 判斷 1. 邏輯判斷優先使用`switch`,對于業務邏輯相對較多情況請選擇`if/else`,提高代碼的可讀性 2. 盡量控制`if/else`判斷的個數,如果太多請考慮功能優化或代碼優化,或使用三元運算符 3. 盡量使用恒等于用于比較判斷,恒等的效率高于等于,而且還能避免一些類型強制轉換的錯誤 4. `if/else`與`&&`單條語句判斷請選擇`&&`的形式,它的效率高于`if/else`,如下: ~~~ ?if ($a == 1) { ? ? ?$b = 2; ?} ?// 優化 ?($a == 1) && $b = 2; ~~~ ## 緩存 1. 使用`PHP`緩存,緩沖`opcode` 2. 使用`memcache/nosql` 3. 使用內存數據庫 4. 使用文件緩存 5. 緩沖功能 ## 其他 1. 少用`@`符號,嚴重影響性能 2. 適時關閉遠程資源連接如數據庫,`ftp`,`socket`等,適時清理這些資源 ## 性能檢測工具 1. `Web Server` 2. `ab` 3. `http_load` 4. `xdebug`
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看