php常用的一些優化技巧(php常用的一些優化技巧有哪些)

本文目錄一覽:

如何徹底優化php程序降低CPU佔用

1、優化數據和邏輯和查詢。

2、改用php7,並且用嚴格模式編寫。

3、優化服務器實現動靜分離比如把apache和iis換成nginx或nginx+apache。

PHP程序優化有什麼好用的技巧嗎?

1、用單引號代替雙引號來包含字符串,這樣做會更快一些。因為PHP會在雙引號包圍的字符串中搜尋變量, 單引號則不會,注意:只有echo能這麼做,它是一種可以把多個字符串當作參數的”函數”(譯註:PHP手冊中說echo是語言結構,不是真正的函數,故 把函數加上了雙引號)。

2、如果能將類的方法定義成static,就盡量定義成static,它的速度會提升將近4倍。

3、$row[‘id’] 的速度是$row[id]的7倍。

4、echo 比 print 快,並且使用echo的多重參數(譯註:指用逗號而不是句點)代替字符串連接,比如echo $str1,$str2。

5、在執行for循環之前確定最大循環數,不要每循環一次都計算最大值,最好運用foreach代替。

6、註銷那些不用的變量尤其是大數組,以便釋放內存。

7、盡量避免使用__get,__set,__autoload。

8、require_once()代價昂貴。

9、include文件時盡量使用絕對路徑,因為它避免了PHP去include_path里查找文件的速度,解析操作系統路徑所需的時間會更少。

10、如果你想知道腳本開始執行(譯註:即服務器端收到客戶端請求)的時刻,使用$_SERVER[‘REQUEST_TIME’]要好於time()。

高質量PHP代碼的50個技巧(3)

42

43

44

45

/**

Method to execute a command in the terminal

Uses :

1. system

2. passthru

3. exec

4. shell_exec

*/

function terminal($command)

{

//system

if(function_exists(‘system’))

{

ob_start();

system($command , $return_var);

$output = ob_get_contents();

ob_end_clean();

}

//passthru

else if(function_exists(‘passthru’))

{

ob_start();

passthru($command , $return_var);

$output = ob_get_contents();

ob_end_clean();

}

//exec

else if(function_exists(‘exec’))

{

exec($command , $output , $return_var);

$output = implode(“\n” , $output);

}

//shell_exec

else if(function_exists(‘shell_exec’))

{

$output = shell_exec($command) ;

}

else

{

$output = ‘Command execution not possible on this system’;

$return_var = 1;

}

return array(‘output’ = $output , ‘status’ = $return_var);

}

terminal(‘ls’);

上面的函數將運行shell命令, 只要有一個系統函數可用, 這保持了代碼的一致性.

5. 靈活編寫函數

?

1

2

3

4

5

6

function add_to_cart($item_id , $qty)

{

$_SESSION[‘cart’][‘item_id’] = $qty;

}

add_to_cart( ‘IPHONE3’ , 2 );

使用上面的函數添加單個項目. 而當添加項列表的時候,你要創建另一個函數嗎? 不用, 只要稍加留意不同類型的參數, 就會更靈活. 如:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

function add_to_cart($item_id , $qty)

{

if(!is_array($item_id))

{

$_SESSION[‘cart’][‘item_id’] = $qty;

}

else

{

foreach($item_id as $i_id = $qty)

{

$_SESSION[‘cart’][‘i_id’] = $qty;

}

}

}

add_to_cart( ‘IPHONE3’ , 2 );

add_to_cart( array(‘IPHONE3’ = 2 , ‘IPAD’ = 5) );

現在, 同個函數可以處理不同類型的輸入參數了. 可以參照上面的例子重構你的多處代碼, 使其更智能.

6. 有意忽略php關閉標籤

我很想知道為什麼這麼多關於php建議的博客文章都沒提到這點.

?

1

2

3

?php

echo “Hello”;

//Now dont close this tag

這將節約你很多時間. 我們舉個例子:

一個 super_class.php 文件

?

1

2

3

4

5

6

7

8

9

?php

class super_class

{

function super_function()

{

//super code

}

}

?

//super extra character after the closing tag

index.php

?

1

2

require_once(‘super_class.php’);

//echo an image or pdf , or set the cookies or session data

這樣, 你將會得到一個 Headers already send error. 為什麼? 因為 “super extra character” 已經被輸出了. 現在你得開始調試啦. 這會花費大量時間尋找 super extra 的位置。因此, 養成省略關閉符的習慣:

?

1

2

3

4

5

6

7

8

9

?php

class super_class

{

function super_function()

{

//super code

}

}

//No closing tag

這會更好.

7. 在某地方收集所有輸入, 一次輸出給瀏覽器

這稱為輸出緩衝, 假如說你已在不同的函數輸出內容:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

function print_header()

{

echo “p id=’header’Site Log and Login links/p”;

}

function print_footer()

{

echo “p id=’footer’Site was made by me/p”;

}

print_header();

for($i = 0 ; $i 100; $i++)

{

echo “I is : $i ‘;

}

print_footer();

替代方案, 在某地方集中收集輸出. 你可以存儲在函數的局部變量中, 也可以使用ob_start和ob_end_clean. 如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

function print_header()

{

$o = “p id=’header’Site Log and Login links/p”;

return $o;

}

function print_footer()

{

$o = “p id=’footer’Site was made by me/p”;

return $o;

}

echo print_header();

for($i = 0 ; $i 100; $i++)

{

echo “I is : $i ‘;

}

echo print_footer();

為什麼需要輸出緩衝:

可以在發送給瀏覽器前更改輸出. 如 str_replaces 函數或可能是 preg_replaces 或添加些監控/調試的html內容.

輸出給瀏覽器的同時又做php的處理很糟糕. 你應該看到過有些站點的側邊欄或中間出現錯誤信息. 知道為什麼會發生嗎? 因為處理和輸出混合了.

8. 發送正確的mime類型頭信息, 如果輸出非html內容的話.

輸出一些xml.

?

1

2

3

4

5

6

$xml = ‘?xml version=”1.0″ encoding=”utf-8″ standalone=”yes”?’;

$xml = “response

code0/code

/response”;

//Send xml data

echo $xml;

工作得不錯. 但需要一些改進.

?

1

2

3

4

5

6

7

$xml = ‘?xml version=”1.0″ encoding=”utf-8″ standalone=”yes”?’;

$xml = “response

code0/code

Php網站如何優化才好

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

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

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

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

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

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

如何對PHP代碼進行優化以提高網站訪問速度

一、不要將整個頁面放到一個table中雖然現在已經很少人使用table來布局,但我覺得還是有必要提一下,原來有些站長為了追求頁面的整齊劃一,將整個網站頁面放入到一個table中,使用表格來布局,如果這樣做顯然會拖慢整個網頁的加載速度。因為table中的內容必須要等到網頁中所有內容全部加載完才會顯示出來,所以如果其中一部分加載很慢或加載不了,勢必會造成網頁的加載變慢。最好是使用div+css的方式來布局頁面,如果要使用table也不要將所有網頁內容加入到一個table中。 一.記得幫頁面減肥我們瀏覽網頁實際上是將虛擬主機中的網頁內容下載到本地硬盤,再用瀏覽器解釋查看的。下載網頁的快慢在顯示速度上佔了很大比重,所以,網頁本身 所佔的空間越小,那麼瀏覽速度就會越快。這就要求在做網頁的時候遵循一切從簡的原則,如:不要使用太大的Flash動畫、圖片等資源。乾淨、簡潔的頁面會 給人一種思路明朗的感覺。 二、PHP等文件訪問通過.js調用。 如果在靜態頁面中需要嵌入動態數據,我們在進行PHP網站優化和其他方法優化時應該注意的是,如果你要在靜態的HTML頁面里嵌入動態的數據,而這些動態的數據是由PHP程序來提供的話,這樣的話,每次有一個人訪問你的網站,服務器就要執行並處理一次PHP文件,從數據庫抽取相應的數據,再輸出到網頁,如果同時有幾萬人訪問,無疑會是服務器不堪重負。 所以最好是將數據動態生成到.js文件中,然後再首頁通過 SCRIPT /SCRIPT 這樣的代碼來調用js文件。如此一來,動態數據的顯示就在客戶端的瀏覽器中進行,大大降低了服務器資源的消耗,網站速度自然會加快。 三.使用iframe嵌套廣告代碼。 如果你在網站上插入一些廣告,又不想因此拖慢網站速度,那使用iframe比較好。只要將這些廣告代碼整理到一個獨立的頁面中,使用iframe調用即可。代碼格式如下: 四、盡量使用靜態頁面和上面說的道理一樣,大家都知道,PHP等程序實現了網站的動態交互,如留言板等。但這類程序必須先由服務器執行處理,再生成靜態頁面,然後用戶才能看到。這就必須小高服務器資源。如果網站訪問人數多,服務器配置又不夠好,很容易就造成網站速度緩慢甚至無法訪問。所以如果沒有必要,請盡量使用靜態頁面。 五.網站統計代碼應獨立放置在網頁的最下方之所以放置最下方是因為如果網站統計代碼出現故障無妨加載時,會有幾十毫秒的延遲,這時如果你將統計代碼放置網頁前面,就會影響網站加載速度。導致頁面很長時間才能訪問。

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

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

相關推薦

  • PHP和Python哪個好找工作?

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

    編程 2025-04-29
  • 使用vscode建立UML圖的實踐和技巧

    本文將重點介紹在使用vscode在軟件開發中如何建立UML圖,並且給出操作交互和技巧的指導。 一、概述 在軟件開發中,UML圖是必不可少的重要工具之一。它為軟件架構和各種設計模式的…

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

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

    編程 2025-04-29
  • Python通配符有哪些

    Python通配符是一種表示字符串中模糊匹配的有效工具,用於匹配與具有特定模式匹配的字符串。Python中主要的通配符有:*,?,[]和{}。 一、星號通配符 * 在Python中…

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

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

    編程 2025-04-29
  • 註冊表取證工具有哪些

    註冊表取證是數字取證的重要分支,主要是獲取計算機系統中的註冊表信息,進而分析痕迹,獲取重要證據。本文將以註冊表取證工具為中心,從多個方面進行詳細闡述。 一、註冊表取證工具概述 註冊…

    編程 2025-04-29
  • Python函數類型有哪些

    本文將從以下幾個方面詳細闡述Python函數類型。 一、內置函數 Python的內置函數是指在Python編程語言中提供的可以直接使用的函數,不需要通過導入模塊等方式引入。 部分常…

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

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

    編程 2025-04-28
  • 優秀周記1000字的撰寫思路與技巧

    優秀周記是每個編程開發工程師記錄自己工作生活的最佳方式之一。本篇文章將從周記的重要性、撰寫思路、撰寫技巧以及周記的示例代碼等角度進行闡述。 一、周記的重要性 作為一名編程開發工程師…

    編程 2025-04-28
  • Python程序變量名有哪些

    Python是一種高級、面向對象、解釋型編程語言,它因為其簡潔明了的語法和廣泛的應用領域而被廣泛使用。在Python中,變量名是關鍵的標識符,它們用於訪問存儲在內存中的值。本文將介…

    編程 2025-04-28

發表回復

登錄後才能評論