亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

淺談php優化需要注意的地方

2020-03-22 17:41:54
字體:
來源:轉載
供稿:網友
我們在編寫程序時,總是想要使自己的程序占用資源最小,運行速度更快,代碼量更少。往往我們在追求這些的同時卻失去了很多東西。下面我想講講我對PHP優化的理解。優化的目的是花最少的代價換來最快的運行速度與最容易維護的代碼。 進行大范圍的優化,而不是死啃某些html' target='_blank'>程序代碼 我這里所說的優化,基本上都是從服務器,Apache,數據庫這些方面來進行的優化,而并不是對你的PHP代碼加以改進從而提高程序的運行速度,因為比起你將程序中的正則優化為字符串處理函數從而提升程序速度來說,在大范圍內進行的優化所需要的代價要比這個小的多,而獲得報酬卻要豐厚的多。 在非代碼處進行優化有以下好處: 1、通常情況下能夠大大提高效率 2、不會危及到代碼的完整性 3、能夠快速部署 緩存技術 下面來說說常用的緩存技術,通過這些緩存技術能夠大大的提高效率 在說到緩存技術的時候不得不提到memcached ,memcached是高效、快速的分布式內存對象緩存系統,主要用于加速 WEB 動態應用程序。 Memcached的原理 memcached 是以守護程序方式運行于一個或多個服務器中,等待接收客戶端的連接操作,客戶端可以由各種語言編寫(例如PHP)。PHP 等客戶端在與 memcached 服務建立連接之后,接下來的事情就是存取對象了,每個被存取的對象都有一個唯一的標識符 key,存取操作均通過這個 key 進行,保存到 memcached 中的對象實際上是放置內存中的,并不是保存在 cache 文件中的,這也是為什么 memcached 能夠如此高效快速的原因。 說完memcached,下面來說說常用的緩存方法 1、編譯與OPCODE緩存 因為PHP是解釋型的語言,所以每個PHP文件在運行的時候都需要編譯后再執行,同一個文件,不同的用戶訪問,或者同一個用戶不同時間訪問同一個文件,每次都需要重新編譯然后運行,這樣就耗費了大量時間。 通過編譯緩存每個文件在修改之后只編譯一次這樣就減少了文件IO操作,用戶訪問后機器指令直接從內存中取出并執行而不是硬盤中讀出。 最常見的PHP編譯緩存工具有:APC,Accelerator,xcache 2、全局頁面緩存– Squid Cache Squid Cache(簡稱為Squid)是一個流行的自由軟件(GNU通用公共許可證)的代理服務器和Web緩存服務器,Squid作為網頁服務器的前置cache服務器通過緩存相關請求來提高Web服務器的速度。 3、局部緩存之SQL緩存 在大多數應用程序中主要的瓶頸往往可以追溯到數據庫的操作中,一般都是因為復雜的數據庫查詢而耗費了大量時間,而SQL緩存可以大大降低復雜查詢造成的負荷。 SQL緩存的例子(使用了memcached擴展) 代碼片段:復制代碼 代碼如下:
$key = md5(“some sort of sql query”);
if (!($result = memcache_get($key))) {
$result = $pdo- query($qry)- fetchAll();
// 緩存查詢結果一小時
memcache_set($key, $result, NULL, 3600);
}
4、局部緩存之代碼塊緩存 為了優化PHP程序,有時候我們不得不優化一個個代碼段來減少那么一點點的執行的時間,但是比起優化復雜的不同的PHP代碼段還不如通過緩存來直接忽略這些代碼段的優化,這樣做的好處是: 1、能夠很快的看到效果 2、不會破壞以前的代碼 3、速度要比優化代碼要快得多 代碼塊緩存的列子(同樣使用了memcached擴展) 代碼片段:復制代碼 代碼如下:
function complex_function_abc($a, $b, $c) {
$key = __FUNCTION__ . serialize
(func_get_args());
if (!($result = memcache_get($key))) {
$result = //函數代碼
// 儲存執行結果1小時
memcache_set($key, $result, NULL, 3600);
}
return $result;
}
當然除了上述方法外還可以用到文件緩存(將數據庫中的數據取出儲存在文件中),還可以生成靜態HTML文件等,但是這些方法的緩存還是將文件儲存在硬盤上而不是內存中。 輸出控制 除了上述緩存技術外還可以通過輸出控制來讓程序執行的時間更少 下面通過PHP與APACHE來說說輸出控制 1、PHP輸出控制 這里最主要用到ob_start()以及PHP中的OB系列函數,這些函數可以做什么呢 第一就是靜態模版技術。所謂靜態模版技術就是通過某種方式,使得用戶在client端得到的是由PHP產生的html頁面。如果這個html頁面不會再被更新,那么當另外的用戶再次瀏覽此頁面時,程序將不會再調用PHP以及相關的數據庫,對于某些信息量比較大的網站,例如sina,163,sohu。類似這種的技術帶來的好處是非常巨大的。 代碼示例:復制代碼 代碼如下:
php
ob_start(); //打開緩沖區

php頁面的全部輸出復制代碼 代碼如下:
php
$content = ob_get_contents(); //取得php頁面輸出的全部內容
$fp = fopen(“output.html”, “w”); //創建一個文件,并打開,準備寫入
fwrite($fp, $content); //把php頁面的內容全部寫入output.html,然后……
fclose($fp);

當然這個ob系列函數還有其他很多用處我就不在這里一一說明了。 2、apache輸出控制 將SendBufferSize設置為頁面大小,這樣就能將頁面一次性放在發送緩沖區從而增加處理速度。 SendBufferSize 指令 說明:TCP發送緩沖區大小(字節) 語法:SendBufferSize bytes 默認值:SendBufferSize 0 作用域:server config 狀態:MPM 模塊:beos, mpm_netware, mpm_winnt, mpmt_os2, prefork, worker 這個指令設置服務器的TCP發送緩沖區的大小(字節)。提高這個值會導致兩個后果:高速度和高潛伏時間(100ms左右)。如果設置為”0″,將使用操作系統默認值。 通過源代碼方式編譯你的Apache/PHP/Database 可讓你的程序增加10–15%的速度下面再說說在代碼優化的時候應該注意的 1、短代碼不等于快的代碼 很多人在寫程序時希望將代碼寫的越簡潔越好,但是越短的代碼有時候反而需要更長的執行時間,所以哪怕是用更多的代碼也不使用速度慢的代碼 2、在寫程序的時候更應該注重程序的擴展性,而不是追求速度 3、在優化你的代碼之前,先看看跟數據庫有關的部分,因為大多數應用程序的瓶頸在數據庫而不是代碼 4、微優化得不償失 什么叫做微優化 就像前面所說的將正則表達式部分的代碼改用字符串函數代替。這樣做有以下缺點: (1)花費時間較長 (2)不會解決你的性能問題 (3)很有可能會破壞以前的代碼從而產生未知的錯誤 (4)付出大于回報 這里還不得不提到一個誤區,有些人為了讓程序更加優化,在分析業務邏輯的時候便將優化考慮在內了,從而為了得到更優的代碼而改動業務邏輯。這是十分愚蠢的想法,因為程序的目的便是為了處理現實中遇到的問題,是為這些問題服務的,怎么能本末倒置呢。php優化是個永恒的話題,想全面的做個總結也不太現實,這里僅僅是自己的一些個人經驗,不一定全部正確,就當拋磚引玉了吧,給需要的小伙伴們一個參考。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品亚洲精品| 91精品久久久久久久久青青| 亚洲国产日韩欧美在线图片| 成人免费淫片视频软件| 午夜精品久久久久久久久久久久| 亚洲无限乱码一二三四麻| 性日韩欧美在线视频| 欧美性69xxxx肥| 91久久精品美女高潮| 精品露脸国产偷人在视频| 日韩精品视频在线免费观看| 国产欧美一区二区三区视频| 人体精品一二三区| 欧美一区二区三区四区在线| 国产区亚洲区欧美区| 欧美重口另类videos人妖| 不卡中文字幕av| 欧美日韩加勒比精品一区| 久久久999精品免费| 亚洲专区中文字幕| 精品视频在线播放色网色视频| 日韩电影中文字幕| 国产suv精品一区二区三区88区| 欧美肥婆姓交大片| 亚洲黄色在线观看| 九九久久久久99精品| 久久精品精品电影网| 国产偷亚洲偷欧美偷精品| 亚洲韩国欧洲国产日产av| 国产免费观看久久黄| 亚洲欧美日韩在线高清直播| 亚洲伊人一本大道中文字幕| 欧美日韩美女视频| 精品久久久久久久久久久久久久| 成人激情视频小说免费下载| 久久99精品久久久久久琪琪| 欧美另类极品videosbestfree| 久久久久久久久爱| 欧美怡红院视频一区二区三区| 日韩欧美亚洲成人| 日本欧美一二三区| 欧美日韩国产一区二区| 久久久免费电影| 亚洲裸体xxxx| 在线精品视频视频中文字幕| 日韩av电影中文字幕| 精品国产一区二区三区久久| 国产精品精品久久久久久| 久久福利视频网| 伊人一区二区三区久久精品| 欧美日韩亚洲精品内裤| 亚洲a∨日韩av高清在线观看| 欧美丝袜一区二区三区| 中文字幕在线看视频国产欧美在线看完整| 热re91久久精品国99热蜜臀| 欧美黑人一区二区三区| 国产精品成人一区二区三区吃奶| 久久国产一区二区三区| 日韩欧美精品网址| 2019日本中文字幕| 成人欧美一区二区三区在线湿哒哒| 日韩精品在线免费观看| 国产一区二区视频在线观看| 成人av电影天堂| 亚洲天堂第一页| 8090理伦午夜在线电影| 日韩国产精品亚洲а∨天堂免| 亚洲第一色在线| 97在线视频免费观看| 狠狠操狠狠色综合网| 中文字幕亚洲欧美日韩高清| 精品国内产的精品视频在线观看| 97视频在线观看网址| 欧美成年人网站| 97福利一区二区| 性欧美xxxx视频在线观看| 国产精品久久久久久一区二区| 国产欧美精品一区二区三区介绍| 亚洲电影中文字幕| 色婷婷综合成人av| 成人观看高清在线观看免费| 欧美激情中文网| 国产精国产精品| 日韩中文字幕国产精品| 欧美日韩中文在线观看| 日韩欧美在线国产| 国产成人精品国内自产拍免费看| 91精品国产综合久久香蕉最新版| 久久中文字幕在线| 视频在线观看99| 国产日韩在线一区| 国产精品视频自拍| 国产91精品久久久久| 欧美一级淫片videoshd| 色偷偷88888欧美精品久久久| 91夜夜揉人人捏人人添红杏| 成人网在线免费观看| 午夜精品久久久久久久99热浪潮| 91亚洲精华国产精华| 国产精品一区二区在线| 成人国内精品久久久久一区| 91视频免费网站| 亚洲欧美国产精品| 欧美疯狂做受xxxx高潮| 欧美性xxxx极品hd欧美风情| 最好看的2019的中文字幕视频| 亚洲女人初尝黑人巨大| 国产视频欧美视频| 亚洲黄色www| 国产亚洲精品va在线观看| 日韩国产精品一区| 91视频免费在线| 亚洲经典中文字幕| 亚洲欧美自拍一区| 韩国精品美女www爽爽爽视频| 92国产精品久久久久首页| 欧美丰满少妇xxxxx| 亚洲人成五月天| 欧美激情综合色| 日韩在线视频播放| 欧美日韩亚洲视频一区| 久久久久国产精品一区| 国产精品美女999| 亚洲自拍中文字幕| 日韩电影在线观看免费| 久久成人人人人精品欧| 91情侣偷在线精品国产| 国语对白做受69| 欧美精品在线免费观看| 国产91精品黑色丝袜高跟鞋| 日韩av第一页| 正在播放亚洲1区| 亚洲自拍偷拍色片视频| 欧美激情第1页| 欧美日韩激情视频8区| 久久99国产综合精品女同| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲成人精品视频在线观看| 欧美日韩免费一区| 青青草99啪国产免费| 18久久久久久| 色综合久久中文字幕综合网小说| 国产精品午夜一区二区欲梦| 尤物yw午夜国产精品视频| 国产日韩在线播放| 欧美日韩国产成人在线| 九九热这里只有在线精品视| 日本aⅴ大伊香蕉精品视频| 日韩av中文字幕在线免费观看| 久久久久久噜噜噜久久久精品| 亚洲国产精品悠悠久久琪琪| 91av在线看| 日韩亚洲在线观看| 成人亚洲综合色就1024| 日本电影亚洲天堂| 久久深夜福利免费观看| 久久久噜久噜久久综合| 精品亚洲夜色av98在线观看| 国产亚洲欧美aaaa| 97视频国产在线| 精品视频在线导航| 欧美在线中文字幕| 国产婷婷97碰碰久久人人蜜臀| 国产精品黄页免费高清在线观看|