PHP 應用的高性優化,不少時候咱們把業務代碼作一些優化,反而是簡單又高效的。前端
業務的異步解耦,好比,咱們把耗時的多個分表數據的排行榜,經過其餘服務作分佈統計,而後再綜合,最終輸出到redis list 中,那咱們前端 PHP 在調用數據的時候,就不用實時計算了。redis
緩存的多級處理,業務複雜之後,常常看到一份相同的數據讀取 N 次,儘管是有緩存服務器,可是讀取的時候也會有網絡 I/O 的開銷,考慮到咱們 PHP 通常使用場景下都是單進程,使用頻率高的,則應該優先使用進程內緩存。而後再本地緩存,而後再到網絡緩存。算法
單例的運用,不要小看了對象的構造,不少時候咱們在同一進程中,會發現同時構造了 N 多相同的對象。每一次的初始化都是一塊內存的開闢和 CPU 的消耗。數據庫
高性能,一個就是運行環境的優化,另外一個是代碼自己的優化。緩存
運行環境的優化,覆蓋面也很廣,包括系統層面的內核,文件系統類型,數據庫及緩存服務自己的性能優化,再到PHP解釋器的性能優化等等,PHP不一樣運行方式的差別(好比Apache模塊,還有PHP-FPM等等)。安全
代碼優化方面,我以爲可維護性和代碼可讀性的重要性大於高性能。代碼優化能夠藉助profiling工具來分析,找到真實訪問條件下,處理瓶頸在哪裏,再去作針對性的優化。固然本身在初次設計和實現的時候,就須要作必定的總體考慮,例如怎麼設計可以減小數據庫的查詢次數,如何減小重複的操做,瞭解同一問題的多種解決辦法哪種效率更高(包括算法上的差別,以及PHP的不一樣方式致使的差別等等),如何設計緩存來提升緩存命中率等等。有一些設計須要在體驗和效率上作個權衡。性能優化
保證穩定性,一樣也分運行環境和代碼自己。前者要對線上服務作完整的監控,這個有不少完善和強大的開源工具可使用,保障基礎環境是穩定可控的,而且可以及時發現問題,進行修復。至於代碼,除了儘可能作完整的測試,開發的時候就須要考慮可能的問題。另外針對PHP,開發環境能夠把error_reporting徹底打開。還有須要知道常見的安全問題(XSS,SQL注入,CSRF,越權等),畢竟安全問題也是穩定的一部分。服務器