北京赛车 pk10开奖记录_Toyou热购彩票官网
香港高速VIP雲機房火爆上線啦!無需備案反黴,開通即用!配套《巔雲自助建站系統3.0》將帶給您飛一般的可視化拖拽建站體驗漸暮,歡迎免費體驗搏鴿。

簡單說說PHP優化那些事(經驗分享)

一佰互聯網站制作(www.yinxi.net) 發布日期 2019-04-28 13:46:28 瀏覽數: 34

我們在編寫程序時匪溜炭,總是想要使自己的程序佔用資源最瀉饈鎩,運行速度更快柬簾,代碼量更少粹瘸黃。往往我們在追求這些的同時卻失去了很多東西侍咎富。下面我想講講我對PHP優化的理解頂潔賈。優化的目的是花最少的代價換來最快的運行速度與最容易維護的代碼沸藤。

  進行大範圍的優化侵,而不是死啃某些程序代碼

  我這里所說的優化羅救,基本上都是從服務器皖廷痕,Apache,數據庫這些方面來進行的優化畝祿色,而並不是對你的PHP代碼加以改進從而提高程序的運行速度乳疥,因為比起你將程序中的正則優化為字符串處理函數從而提升程序速度來說曝謂,在大範圍內進行的優化所需要的代價要比這個小的多供窩錳,而獲得報酬卻要豐厚的多傷。

  在非代碼處進行優化有以下好處締︰

  1冉、通常情況下能夠大大提高效率

  2僧此、不會危及到代碼的完整性

  3脅、能夠快速部署

  緩存技術

  下面來說說常用的緩存技術合裁,通過這些緩存技術能夠大大的提高效率

  在說到緩存技術的時候不得不提到memcached 愁混掠,memcached是高效詳痊、快速的分布式內存對象緩存系統僻糧,主要用于加速 WEB 動態應热购彩票 “恩熙……恩熙……”“嘩啦啦∼”用程序阜烹。

  Memcached的原理

  memcached 是以守護程序方式運行于一個或多個服務器中孤淚,等待接收客戶端的連接操作賀,客戶端可以由各種語言編寫(例如PHP)帆僵浪。PHP 等客戶端在與 memcached 服務建立連接之後撾圖入,接下來的事情就是存取對象了歉懇粳,每個被存取的對象都有一個唯一的標識符 key杉氛,存取操作均通過這個 key 進行粉掛,保存到 memcached 中的對象實際上是放置內存中的犬鉗,並不是保存在 cache 文件中的賀醒,這也是為什麼 memcached 能夠如此高效快速的原因憑變。

  說完memcached酵伺彤,下面來說說常用的緩存方法

  1氦絨、編譯與OPCODE緩存

  因為PHP是解釋型的語言順孔搞,所以每個PHP文件在運行的時候都需要編譯後再執行鵲,同一個文件侍潑,不同的用戶訪問晶膜紋,或者同一個用戶不同時間訪問同一個文件沒撕,每次都需要重新編譯然後運行單藏傅,這樣就耗費了大量時間磨。

  通過編譯緩存每個文件在修改之後只編譯pk10开奖记录 比鐵還硬!“你可真快1夸我。一次這樣就減少了文件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酗婪。類似這種pk10开奖记录 “請稍等。”他又想喝酒。的技術帶來的好處是非常巨大的詞。

  代碼示例歌︰

代碼示例浦︰

復制代碼 代碼如下:
  <?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 可讓你的程序增加1015%的速度

  下面再說說在代碼優化的時候應該注意的

  1女、短代碼不等于快的代碼

  很多人在寫程序時希望將代碼寫的越簡潔越好鼻賴環,但是越短的代碼有時候反而需要更長的執行時間俱,所以哪怕是用更多的代碼也不使用速度慢的代碼

  2廁判、在寫程序的時候更應該注重程序的擴展性舊毒性,而不是追求速度

  3受罷、在優化你的代碼之前懼敦,先看看跟數據庫有關的部分祭窮歇,因為大多數應用程序的瓶頸在數據庫而不是代碼

  4燙、微優化得不償失

  什麼叫做微優化?就像前面所說的將正則表達式部分的代碼改用字符串函數代替幕控。這樣做有以下缺點駛欺︰

  (1)花費時間較長

  (2)不會解決你的性能問題

  (3)很有可能會破壞以前的代碼從而產生未知的錯誤

  (4)付出大于回報

  這里還不得不提到一個誤區駒,有些人為了讓程序更加優化葦涼靶,在分析業務邏輯的時候便將優化考慮在內了時,從而為了得到更優的代碼而改動業務邏輯藹聰。這是十分愚蠢的想法弦,因為程序的目的便是為了處理現實中遇到的問題隆,是為這些問題服務的螞,怎麼能本末倒置呢誠填。

一佰互聯是全國知名建站品牌服務商,我們有九年網站建設七、網站制作柯、網頁設計訛、php開發和域名注冊及虛擬主機服務經驗脆誕,提供的自助建站服務更是全國有名霖盎僵。近年來還整合團隊優勢自主開發了可視化多用戶”巔雲建站系統“3.0平台版憐苔膠,拖拽排版網站制作設計酪掀,輕松實現pc站地、手機微網站措湘、小程序詩縫、APP一體化全網營銷網站建設 艱逝謝,已成功的為全國上百家網絡公司提供自助建站平台搭建服務攘。

相關新聞more

22
04月
linux中各種鎖機制的使用與區別詳解

前言癱卻其︰相信需要了解這方面的知識的小伙伴覽澗,已經基本對進程間通信和線程間通信有了一定了解害物。例如弗操趟,進程間通信的機制之一宮淚林︰共享內存(在這里不做詳解)... >>詳情

04
04月
小城租房 l 房屋租賃帶火了“房屋托管”陝,但

簡介甫鱉︰2016 年 6 月 3 日邯縣究,國務院辦公廳首次對租賃市場出台規範性文件觀,提出今後房地產市場改革的方向“建立購租並舉的住房制度”殘編。201... >>詳情

17
04月
支付寶推未來醫院計劃 掛號付費都將可用支付寶

支付寶今日正式對外公布了正在推進的一項“未來醫院計劃”手,根據這一計劃示歡,支付寶未來將對醫療機構開放自己的平台能力堆,包括... >>詳情

30
04月
在php中判斷一個請求是ajax請求還是普通

/path/to/pkphp.com/script.php?ajax 在php腳本中使用如下方法判斷挫︰ 復制代碼 代碼如下: if(isse... >>詳情

營業執照. cdn加速服務 備案系統認證 網絡安全協會 我們的支付方式AAA認證

7x24小時服務電話:18581389571 傳真:023-85725751 免費建站交流群駁撾嘶︰236412099 139947842(自助建站交流) E-Mail:post@yinxi.net 網站投訴:
重慶楚捷科技有限公司 一佰互聯©版權所有 自助建站(www.yinxi.net,Inc.) 2001-2020 All Rights Reserved 本站程序受法律保護,網站法律顧問盾穢咆︰ITLAW-莊毅雄律師
中華人民共和國信息產業部網站備案號:渝ICP備12000592號
北京赛车pk10开奖 北京赛车