php的優化,php怎麼優化

本文目錄一覽:

php做優化包括哪些內容?

1:單引號代替雙引號,雙引號會去找變數。

2:方法定義為static,性能提升4倍。

3:$arr[‘id’]的性能是$arr[id]的7倍。

4:echo性能快,盡量使用echo $a,$b,$c而非echo $a.$b.$c。

5:循環之前確定循環次數,盡量用foreach。

6:註銷不使用的變數,節省內存。

7:盡量不使用魔法函數:__get、__set等。

8:require_once()會檢查是否載入,消耗內存。

9:include文件時使用絕對路徑,省去查找的時間。

10:腳本開始執行時間$_SERVER[『REQUEST_TIME』]要好於time()。

11:正則效率低,用函數代替。

12:str_replace函數比preg_replace函數快,但strtr函數的效率是str_replace函數的四倍。

13:接收客串的效率比接收數組的效率高。

14:switch case好於多個if else。

15:用@屏蔽錯誤消息的方法很低效。

16:打開apache的mod_deflate模塊,可以提高網頁的瀏覽速度。

17:資料庫連接當使用完畢時應關掉,不要用長連接。

18:錯誤消息代價昂貴。

19:在方法中遞增局部變數,速度是最快的。幾乎與在函數中調用局部變數的速度相當。

20:遞增一個全局變數要比遞增一個局部變數慢2倍。

21:遞增一個對象屬性(如:$this-prop++)要比遞增一個局部變數慢3倍。

22:遞增一個未預定義的局部變數要比遞增一個預定義的局部變數慢9至10倍。

23:僅定義一個局部變數而沒在函數中調用它,同樣會減慢速度(其程度相當於遞增一個局部變數)。PHP大概會檢查看是否存在全局變數。

24:方法調用看來與類中定義的方法的數量無關,因為我(在測試方法之前和之後都)添加了10個方法,但性能上沒有變化。

25:派生類中的方法運行起來要快於在基類中定義的同樣的方法。

26:調用帶有一個參數的空函數,其花費的時間相當於執行7至8次的局部變數遞增操作。類似的方法調用所花費的時間接近於15次的局部變數遞增操作。

27:Apache解析一個PHP腳本的時間要比解析一個靜態HTML頁面慢2至10倍。盡量多用靜態HTML頁面,少用腳本。

28:盡量做緩存,可使用memcached。memcached是一款高性能的內存對象緩存系統,可用來加速動態Web應用程序,減輕資料庫負載。對運算碼 (OP code)的緩存很有用,使得腳本不必為每個請求做重新編譯。

29:當操作字元串並需要檢驗其長度是否滿足某種要求時,你想當然地會使用strlen()函數。此函數執行起來相當快,因為它不做任何計算,只返回在zval 結構(C的內置數據結構,用於存儲PHP變數)中存儲的已知字元串長度。但是,由於strlen()是函數,多多少少會有些慢,因為函數調用會經過諸多步驟,如字母小寫化(譯註:指函數名小寫化,PHP不區分函數名大小寫)、哈希查找,會跟隨被調用的函數一起執行。在某些情況下,你可以使用isset() 技巧加速執行你的代碼。

30:當執行變數$i的遞增或遞減時,$i++會比++$i慢一些。這種差異是PHP特有的,並不適用於其他語言,所以請不要修改你的C或Java代碼並指望它們能立即變快,沒用的。++$i更快是因為它只需要3條指令(opcodes),$i++則需要4條指令。後置遞增實際上會產生一個臨時變數,這個臨時變數隨後被遞增。而前置遞增直接在原值上遞增。這是最優化處理的一種,正如Zend的PHP優化器所作的那樣。牢記這個優化處理不失為一個好主意,因為並不是所有的指令優化器都會做同樣的優化處理,並且存在大量沒有裝配指令優化器的互聯網服務提供商(ISPs)和伺服器。

31:並不是事必面向對象(OOP),面向對象往往開銷很大,每個方法和對象調用都會消耗很多內存。

32:盡量採用大量的PHP內置函數。

33:如果在代碼中存在大量耗時的函數,你可以考慮用C擴展的方式實現它們。

34:mod_zip可作為Apache模塊,用來即時壓縮你的數據,並可讓數據傳輸量降低80%。

35:在可以用file_get_contents替代file、fopen、feof、fgets等系列方法的情況下,盡量用 file_get_contents,因為他的效率高得多!但是要注意file_get_contents在打開一個URL文件時候的PHP版本問題。

36:盡量的少進行文件操作,雖然PHP的文件操作效率也不低的。

37:優化Select SQL語句,在可能的情況下盡量少的進行Insert、Update操作(在update上,我被惡批過)。

38:循環內部不要聲明變數,尤其是大變數:對象。

39:多維數組盡量不要循環嵌套賦值。

40:在可以用PHP內部字元串操作函數的情況下,不要用正則表達式。

41:foreach效率更高,盡量用foreach代替while和for循環。

42:用i+=1代替i=i+1。符合c/c++的習慣,效率還高。

43:對global變數,應該用完就unset()掉。

如何正確實現PHP網站優化

1、使用GZip

在每一個PHP頁面頂部加入以下代碼:

?php ob_start(“ob_gzhandler”);?

使用該代碼後伺服器會壓縮所有需要傳送到客戶端的代碼,並在瀏覽器中進行解壓,從而使網站運行速度加快。這一功能還可以節省網站空間的流量。

2、不要濫用Javascript和Ajax

只在需要的時候才使用Javascript和Ajax,千萬不要濫用它們。有些網站使用了太多不必要的Ajax動畫,或使用Ajax來載入無用的部分。這樣一來Javascript文件就會變得很大,而實際上卻有很多其他方案來實現這些功能。

3、圖片、頭文件和HTTP請求

網頁所引用的圖片、外部文件以及CSS樣式文件越多,網頁就載入得越慢。花些時間把圖片文件和其他外部文件縮小一些吧,使它們能更快地被載入。此外,每一次載入圖片和外部文件時都會產生一個HTTP請求,這一定會拖延載入時間。

4、限制MySQL查詢次數

對資料庫的每一次請求都會使網頁的載入速度減緩一些。網路開發者允許很難控制這一點,但是在一些細節的地方是可以進行優化的。比如,在選擇資料庫記錄時,不要使用以下代碼:

SELECT * FROM database

而是使用:

SELECT id, name, date, author, etc, blah, blah FROM database

這會消耗更少的查詢時間並減少伺服器的負載。

5、.php擴展名

有些人認為將JS文件保存為filename.js.php以及將CSS文件保存為stylesheet.css.php會讓載入的時間減少些,但我並沒有察覺到這其中的差別。當然,如果你網站的速度變得很慢,你可以試試這個方法。當然,你需要在每個PHP文件中用include()去載入這些文件。

Php網站如何優化才好

優化網站,對於PHP來說主要有以下幾點

代碼分析,找出耗時長或者卡頓的代碼加以優化。

循環太多:循環太多就考慮如何去掉循環,或者優化循環體結構,包括每次提前計算好變數,不在循環體內做過多運算。

IO瓶頸:就是sql語句有缺陷,或者磁碟讀寫過慢,網路帶寬過低。sql優化包括索引優化,啟用redis或memcache,分表分庫等等優先順序從前到後,網上都有很多教程。磁碟讀寫慢,就要考慮上固態硬碟。帶寬就要聯繫網路運營商解決

精簡前端頁面。現在頁面功能越來越複雜,卡頓不一定是後台,前端出現問題也很多。包括頁面內容太多(適當縮減一部分網頁內容),js,css,圖片太大(對js,css進行壓縮,去掉冗餘代碼等。使用壓縮格式的圖片,如jpg格式控制圖片大小(盡量在100K甚至10K以內)啟用網頁緩存等)

深度優化性能,包括採用更快的PHP(PHP7.2),更快的伺服器(Linux+nginx),更快的mysql(讀寫分離)等等。

PHP之優化PHP-FPM

在上一篇,我們說到了 安裝opcahe來加速php

,那麼還有其他方法可以優化嗎?有的,本文我們來優化PHP-FPM

執行命令

我們將其修改為

重啟 php-fpm

現在再來測試

相比之前文章的 Requests per second: 120.74 [#/sec] (mean) 現在又提高了到154,是不是很簡單,當然如果這不是一台Mac創建的四台虛擬機的話,這個數值還會更高

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/192280.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-01 09:57
下一篇 2024-12-01 09:57

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若伺服器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27
  • PHP與Python的比較

    本文將會對PHP與Python進行比較和對比分析,包括語法特性、優缺點等方面。幫助讀者更好地理解和使用這兩種語言。 一、語法特性 PHP語法特性: <?php // 簡單的P…

    編程 2025-04-27
  • PHP版本管理工具phpenv詳解

    在PHP項目開發過程中,我們可能需要用到不同版本的PHP環境來試驗不同的功能或避免不同版本的兼容性問題。或者我們需要在同一台伺服器上同時運行多個不同版本的PHP語言。但是每次手動安…

    編程 2025-04-24
  • PHP數組去重詳解

    一、array_unique函數 array_unique是php中常用的數組去重函數,它基於值來判斷元素是否重複,具體使用方法如下: $array = array(‘a’, ‘b…

    編程 2025-04-24
  • PHP導出Excel文件

    一、PHP導出Excel文件列寬調整 當我們使用PHP導出Excel文件時,有時需要調整單元格的列寬。可以使用PHPExcel類庫中的setWidth方法來設置單元格的列寬。下面是…

    編程 2025-04-24
  • php擴展庫初探

    一、什麼是php擴展庫? PHP擴展庫(PHP extension)是一些用C語言編寫的動態鏈接庫,用於擴展PHP的功能。PHP擴展庫使得PHP可以與各種資料庫系統相連、SMTP、…

    編程 2025-04-23

發表回復

登錄後才能評論