php查詢sqlite慢 PHP 應用效能優化指南

2021-10-14 03:16:48 字數 3606 閱讀 5556

php**優化最佳實踐

編寫好的php**是建立快速穩定web應用的關鍵一步。從一開始就遵循一些最佳實踐技巧將節省後期填坑的時間。

1. 盡可能的使用php的內建方法

只要可以盡可能的使用php的內建方法,而不是自己編寫相同功能的方法。花點時間去熟悉和學習php的內建方法,不但可以幫助你更快的編寫**,而且可以使你編寫的**更高效的執行。

2. 使用json替代xml

json_encode()和json_decode() 等php的內建方法,執行速度都非常快,所有應該優先使用json。如果你無法避免使用xml,那麼請務必使用正規表示式而不是dom操作來進行解析。

3. 使用快取技術

memcache特別適用於減少資料庫負載,而像apc或opcache這樣的位元組碼快取引擎在指令碼編譯時可節省執行時間。

4. 減少不必要的計算

當乙個變數會被多次使用時,一開始就計算好,肯定要比每次使用時都計算一遍要更高效。

5. 使用isset()和empty()

與count()、strlen()和sizeof()函式相比,isset()和empty()對於檢測乙個變數是否為空等場景更加簡單和高效。

6. 減少不必要的類

如果你不打算重複使用乙個類或者方法,那麼它就沒什麼存在的價值。而如果你必須要定義和使用乙個類,則需要合理規劃類中的方法,對於不是特別公用的方法,盡量將他們放到子類中去,因為呼叫子類中的方法,比呼叫父類方法速度更快。

7. 在生產環境關閉用作除錯的相關**及錯誤報告

開發時開啟錯誤報告,可以讓你避免很多潛藏的bug,而一些除錯**也有助於你定位bug,但是當**部署到生產環境後,這些錯誤報告和除錯**會拖慢你的程式速度,而且將一些錯誤報告直接顯示給使用者,也具有相當的安全風險。因此,在生產環境請關閉它們。

8. 關閉資料庫連線

當使用完畢後,登出變數和關閉資料庫連線,可以釋放珍貴的記憶體資源。

9. 使用聚合函式減少資料庫查詢

查詢資料庫時,使用聚合函式,可以減少檢索資料庫的頻率,並且使程式執行的更快。

10. 使用強大的字串操作函式

舉個例子,str_replace()比preg_replace()要快,而strtr()函式則比str_replace()函式快四倍。

11. 盡量使用單引號

如果可能,盡量使用單引號替代雙引號。程式執行時,會檢查雙引號中的變數,這會拖慢程式的效能。

12. 嘗試使用恒等運算子

由於「===」僅檢查閉合範圍,因此比使用「==」進行比較速度更快。

php**之外的效能瓶頸因素

優化**當然能夠提高php的效能。但是,還有一些**之外的因素也會成為php的效能瓶頸。這就是為什麼程式設計師需要了解**部署的整個伺服器環境,這有助於他們在編寫**時有一定的心理準備,並能夠在效能出現問題時,快速識別和定位效能瓶頸。以下是你遇到效能瓶頸時需要檢查的點。

1. 網路頻寬

如果網路頻寬不夠,其傳輸的總資料量將會受到嚴重影響,使其成為最明顯的效能瓶頸。

2. cpu

如果只是傳輸一些純靜態的html,則不需要消耗很多cpu資源,但是php畢竟建立的是動態的應用程式,根據應用的需要,你可能至少需要一台具備多核處理器的伺服器來提公升php**的執行效率。

3. 共享記憶體

缺少共享記憶體可能會影響程序間通訊,從而影響程式效能。

4. 檔案系統

隨著時間推移,你的檔案系統可能會出現大量磁碟碎片。如果記憶體足夠,利用記憶體作為檔案快取可以加快磁碟的訪問速度。

5. 程序管理

檢查伺服器的程序,確保裡面沒有非必要的程序。移除哪些不需要的網路協議、病毒掃瞄軟體、郵件服務以及硬體驅動。將php**執行在多執行緒模式,也能提高程式的響應時間。

6. 相關的其它服務

如果你的應用程式還依賴於一些外部服務,那這些外部服務的效能瓶頸也有可能拖慢你的應用。雖然這種情況下你能做的事情不多,但你仍然可以通過你這一邊的操作來減輕外部服務效能瓶頸對你的影響,例如切換到備用服務上等。

更多php效能優化建議

1. 發揮opcache的優勢

由於預設情況下,php**在執行時都會重新編譯為可執行的中間**opcode,因此可以及時看到修改的**所帶來的變化,而不必頻繁的重啟php服務。不幸的是,如果每次在你的**上執行時,都重新編譯相同的**會嚴重影響伺服器的效能,這就是為什麼opcode快取或opcache 非常有用。

opcache是乙個將編譯好的**儲存到記憶體中的擴充套件。因此,下一次**執行時,php將檢查時間戳和檔案大小,以確定原始檔是否已更改。如果沒有,則直接執行快取的**。

下圖顯示了執行無快取的php應用程式,opcache和eaccelerator(另乙個php快取工具)三者的執行時間和記憶體使用情況的差異。

2. 識別資料庫響應延遲

如上所述,效能問題並不總是由**引起的。大多數瓶頸都出現在應用程式必須訪問資源的時候。由於php應用程式的資料訪問層可能占用最高90%的執行時間,因此你應該採取的第一步是檢視**中訪問資料庫的所有例項。

確保開啟sql的慢日誌,以幫助你識別和處理慢sql,然後評估這些查詢的執行效率。如果你發現查詢過多,或者在單次執行過程中發現相同的查詢被多次進行,你可以通過減少資料庫訪問時間進行調整,從而提高應用程式的效能。

3. 清理檔案系統

清理檔案系統,並確保沒有使用檔案系統來儲存session。最重要的是,請注意file_exists(),filesize()或filetime()等觸發檔案統計資訊的**。將任何這些功能置於迴圈中可能會導致效能問題。

4. 監控外部api介面

大部分對外部系統有依賴關係的應用都會呼叫遠端api。雖然這些遠端api接**無法直接控制,但你仍可以採取一些措施來減輕源自遠端api的效能問題。例如,你可以快取api輸出的資料,或者可以在後台呼叫這些api。為api請求設定合理的超時時間,並且如果可能的話,隨時做好api沒有響應的情況下的顯示輸出。

5. 使用工具評估檢測你的php**

使用opcache和監控外部api介面應該足以使大多數應用程式執行順利;但是,如果你發現系統負載不斷增加,那麼可能需要使用工具來對你的php**進行檢測評估。完整的php**檢測評估雖然可能很耗時,但它可以為你提供有關應用程式效能的深入資訊。幸運的是,有幾個開源程式可以用於分析你的php**,如xdebug。

監控php效能的重要性

如果你沒有做好準備,你的web應用可能前一分鐘還在正常執行,但是下一分鐘,一波突然激增的流量就會導致你的應用程式崩潰。 當然,優化和重構總是需要時間、精力和資金,而且投入是否值得的也很難說。因此,做出明智決策的最佳方式是不斷收集資料

php效能監控軟體可以幫助你立即測量所做的任何更改的影響。當然,知道要監測什麼同樣重要。速度和記憶體使用被認為是效能的最佳指標,因為它們影響到頁面載入時間,這對web應用程式至關重要。

雖然資料收集很重要,但是當你不需要監控系統時,你應該關閉監控系統,因為大量日誌同樣也會對效能造成影響。當然,這樣的日誌可以提供有關如何提高效能的有用資訊,因此你應該在高峰期間定期監控。

未來的php效能

php仍在不斷進化中,在目前正在開發的php 8版本中,最新的功能是即時編譯或jit,它將可以為我們建立更快的web應用。隨著技術的不斷進步,使用者的期望也隨之增加。因此,開發人員必須始終關注未來的變化。

PHP慢指令碼日誌和Mysql的慢查詢日誌

1 php慢指令碼日誌 間歇性的502,是後端 php fpm 不可用造成的,間歇性的502一般認為是由於 php fpm 程序重啟造成的。在 php fpm 的子程序數目超過的配置中的數量時候,會出現間歇性的502錯誤,如果在配置中設定了max requests的話,超過數量也會出現502錯誤,而...

PHP慢指令碼日誌和Mysql的慢查詢日誌

開啟php慢查詢日誌 1 sudo vi usr loal php etc php fpm.conf 2 default value 0 3 request slowlog timeout 1s 4 the log file for slow requests 5 default value usr...

php學習之sqlite查詢語句之多條件查詢

一。php mysql多條件 多值查詢示例 index.html 房屋型別 一居室二居室 三居室二。區間式多條件查詢 例子 把該傳的條件傳到php程式裡 比如有三個條件price 1000 3000,name nokia,type 2 在php裡分別接到這些條件,我定義為以下幾個 pmax 3000...