php存儲優化,php常用的優化方式

本文目錄一覽:

PHP-MySQL優化存儲、查詢:有上億文章,應該怎麼存儲、怎麼查詢才能高效滿足一下要求:

這個一時半會兒三言兩語很難說清楚,大概從緩存和靜態化入手。

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內存消耗制度是怎樣的?,如何能優化內存呢

如果兩個對象之間存在着相互引用的關係,如「父對象-子對象」,對父對象調用 unset() 不會釋放在子對象中引用父對象的內存(即便父對象被垃圾回收,也不行)這種情況如果在你的一個長期運行的代碼中使用到了一大堆相互引用的對象,尤其是在對象相對較大的情況下,內存會迅速地消耗殆盡。還有注意的是在定義類的時候,一定要定義銷毀類的方法: __destruct(),該方法可將所有內部的父對象引用全部清除,以避免上面的那種特殊情況。

php怎麼做數據庫優化

2個方面:sql語句優化,緩存。

sql語句中select * from 表 不需要全部信息的話就盡量不要用*,要哪個字段就寫哪個,不要怕寫。

如今php中有許多的緩存方式,有模板緩存,sql查詢緩存。代表有smarty和memcache,當然,其他還有很多優秀的緩存方式,我就不多說了。

php內存優化,哪位大神幫我做下優化,現在內存佔用很高

組合數本來就巨大,長度為100的時候,結果數組是100的100次方個,不可能有這麼大內存的服務器。

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-02 18:05
下一篇 2025-01-02 18:06

相關推薦

  • PHP和Python哪個好找工作?

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

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

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

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

    編程 2025-04-29
  • Python緩存圖片的處理方式

    本文將從多個方面詳細闡述Python緩存圖片的處理方式,包括緩存原理、緩存框架、緩存策略、緩存更新和緩存清除等方面。 一、緩存原理 緩存是一種提高應用程序性能的技術,在網絡應用中流…

    編程 2025-04-29
  • Python序列的常用操作

    Python序列是程序中的重要工具,在數據分析、機器學習、圖像處理等很多領域都有廣泛的應用。Python序列分為三種:列表(list)、元組(tuple)和字符串(string)。…

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

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

    編程 2025-04-28
  • Python在線編輯器的優勢與實現方式

    Python在線編輯器是Python語言愛好者的重要工具之一,它可以讓用戶方便快捷的在線編碼、調試和分享代碼,無需在本地安裝Python環境。本文將從多個方面對Python在線編輯…

    編程 2025-04-28
  • 上傳多媒體文件的常用方法——uploadmediabyurl

    uploadmediabyurl是一個非常常用的方法,它允許我們將本地的多媒體文件上傳到微信服務器上。 一、uploadmediabyurl的基本使用方法 要使用uploadmed…

    編程 2025-04-27
  • Java表單提交方式

    Java表單提交有兩種方式,分別是get和post。下面我們將從以下幾個方面詳細闡述這兩種方式。 一、get方式 1、什麼是get方式 在get方式下,表單的數據會以查詢字符串的形…

    編程 2025-04-27
  • Python數據看板開發:常用的包及其使用

    隨着數據分析和可視化的需求日漸增長,數據看板作為一種高效展示複雜數據信息的工具應運而生。Python語言作為一種面向數據分析和科學計算的編程語言,在數據看板開發中有着廣泛的應用。本…

    編程 2025-04-27

發表回復

登錄後才能評論