<output id="r87xx"></output>
    1. 
      
      <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
        •   

               當(dāng)前位置:首頁(yè)>軟件介紹>優(yōu)化php提高性能的一些方法 查詢:
               
          優(yōu)化php提高性能的一些方法

                  優(yōu)化php效率,提高php性能的一些方法

                  1、在可以用file_get_contents替代file、fopen、feof、fgets等系列方法的情況下,盡量用 file_get_contents,因?yàn)樗男矢叩枚唷且⒁鈌ile_get_contents在打開(kāi)一個(gè)URL文件時(shí)候的PHP版本問(wèn)題;

                  2、盡量的少進(jìn)行文件操作,雖然PHP的文件操作效率也不低的;

                  3、優(yōu)化Select SQL語(yǔ)句,在可能的情況下盡量少的進(jìn)行Insert、Update操作(在update上,我被惡批過(guò));

                  4、盡可能的使用PHP內(nèi)部函數(shù)(但是我卻為了找個(gè)PHP里面不存在的函數(shù),浪費(fèi)了本可以寫(xiě)出一個(gè)自定義函數(shù)的時(shí)間,經(jīng)驗(yàn)問(wèn)題啊~);

                  5、循環(huán)內(nèi)部不要聲明變量,尤其是大變量:對(duì)象(這好像不只是PHP里面要注意的問(wèn)題吧,);

                  6、多維數(shù)組盡量不要循環(huán)嵌套賦值;

                  7、在可以用PHP內(nèi)部字符串操作函數(shù)的情況下,不要用正則表達(dá)式;

                  8、foreach效率更高,盡量用foreach代替while和for循環(huán);

                  9、用單引號(hào)替代雙引號(hào)引用字符串;

                  10、“用i+=1代替i=i+1。符合c/c++的習(xí)慣,效率還高”;

                  11、對(duì)global變量,應(yīng)該用完就unset()掉;

                  12、在for或者foreach中,用 $tempArray[] = $field代替$tempArray[count($tempArray)] = $field

                  13、靜態(tài)調(diào)用的成員一定要定義成 static (PHP5 ONLY) 貼士:PHP 5 引入了靜態(tài)成員的概念,作用和 PHP 4 的函數(shù)內(nèi)部靜態(tài)變量一致,但前者是作為類的成員來(lái)使用。靜態(tài)變量和 Ruby 的類變量(class variable)差不多,所有類的實(shí)例共享同一個(gè)靜態(tài)變量。

                  QUOTE:

                  復(fù)制代碼 代碼如下:

                  // PHP CODE Highliting for CU by dZ902

                  <?php

                  class foo {

                  function bar() {

                  echo 'foobar';

                  }

                  }

                  $foo = new foo;

                  // instance way

                  $foo- bar();

                  // static way

                  foo::bar();

                  ?>

                  靜態(tài)地調(diào)用非 static 成員,效率會(huì)比靜態(tài)地調(diào)用 static 成員慢 50-60%。主要是因?yàn)榍罢邥?huì)產(chǎn)生 E_STRICT 警告,內(nèi)部也需要做轉(zhuǎn)換。 使用類常量 (PHP5 ONLY)

                  貼士:PHP 5 新功能,類似于 C++ 的 const。

                  使用類常量的好處是:

                  - 編譯時(shí)解析,沒(méi)有額外開(kāi)銷

                  - 雜湊表更小,所以內(nèi)部查找更快

                  類常量?jī)H存在于特定「命名空間」,所以雜湊名更短 -

                  - 代碼更干凈,使除錯(cuò)更方便

                  (暫時(shí))不要使用 require/include_once require/include_once 每次被調(diào)用的時(shí)候都會(huì)打開(kāi)目標(biāo)文件~ - 如果用絕對(duì)路徑的話,PHP 5.2/6.0 不存在這個(gè)問(wèn)題

                  - 新版的 APC 緩存系統(tǒng)已經(jīng)解決這個(gè)問(wèn)題文件 I/O 增加 = 效率降低

                  如果需要,可以自行檢查文件是否已被 require/include。 不要調(diào)用毫無(wú)意義的函數(shù)有對(duì)應(yīng)的常量的時(shí)候,不要使用函數(shù)。

                  QUOTE:

                  復(fù)制代碼 代碼如下:

                  // PHP CODE Highliting for CU by dZ902

                  <?php

                  php_uname('s') == PHP_OS;

                  php_version() == PHP_VERSION;

                  php_sapi_name() == PHP_SAPI;

                  ?>

                  雖然使用不多,但是效率提升大概在 3500% 左右。

                  最快的 Win32 檢查

                  QUOTE:

                  復(fù)制代碼 代碼如下:

                  // PHP CODE Highliting for CU by dZ902

                  <?php

                  $is_win = DIRECTORY_SEPARATOR == '';

                  ?>

                  時(shí)間問(wèn)題 (PHP 5.1.0 ONLY)

                  用系統(tǒng)變量$_SERVER['REQUEST_TIME'],代替系統(tǒng)函數(shù)time() 加速 PCRE

                  這樣 PHP 不用為符合的內(nèi)容分配內(nèi)存,省。效率提升 15% 左右。 - 能不用正則,就不用正則,在分析的時(shí)候仔細(xì)閱讀手冊(cè)「字符串函數(shù)」部分。有沒(méi)有你漏掉的好用的函數(shù),

                  例如:

                  strpbrk()

                  strncasecmp()

                  strpos()/strrpos()/stripos()/strripos()

                  加速 strtr

                  如果需要轉(zhuǎn)換的全是單個(gè)字符的時(shí)候,用字符串而不是數(shù)組來(lái)做 strtr:

                  QUOTE:

                  復(fù)制代碼 代碼如下:

                  // PHP CODE Highliting for CU by dZ902

                  <?php

                  $addr = strtr($addr, "abcd", "efgh"); // good

                  $addr = strtr($addr, array('a' = 'e', // ...

                  )); // bad

                  ?>

                  效率提升:10 倍。

                  不要做無(wú)謂的替換

                  即使沒(méi)有替換,str_replace 也會(huì)為其參數(shù)分配內(nèi)存。很慢~解決辦法: - 用 strpos 先查找(非常快),看是否需要替換,如果需要,再替換 效率:

                  如果需要替換:效率幾乎相等,差別在 0.1% 左右。 -

                  - 如果不需要替換:用 strpos 快 200%。

                  邪惡的 @ 操作符

                  不要濫用 @ 操作符。雖然 @ 看上去很簡(jiǎn)單,但是實(shí)際上后臺(tái)有很多操作。用 @ 比起不用 @,效率差距:3 倍。

                  特別不要在循環(huán)中使用 @,在 5 次循環(huán)的測(cè)試中,即使是先用 error_reporting(0) 關(guān)掉錯(cuò)誤,在循環(huán)完成后再打開(kāi),都比用 @ 快。 善用 strncmp

                  當(dāng)需要對(duì)比「前 n 個(gè)字符」是否一樣的時(shí)候,用 strncmp/strncasecmp,而不是 substr/strtolower,更不是 PCRE,更千萬(wàn)別提 ereg。

                  strncmp/strncasecmp 效率最高(雖然高得不多)。

                  慎用 substr_compare (PHP5 ONLY) 按照上面的道理,substr_compare 應(yīng)該比先 substr 再比較快咯。答案是否定的,除非:

                  - 無(wú)視大小寫(xiě)的比較

                  - 比較較大的字符串

                  不要用常量代替字符串為什么:

                  - 需要查詢雜湊表兩次

                  - 需要把常量名轉(zhuǎn)換為小寫(xiě)(進(jìn)行第二次查詢的時(shí)候)

                  - 生成 E_NOTICE 警告

                  - 會(huì)建立臨時(shí)字符串

                  效率差別:700%。

                  不要把 count/strlen/sizeof 放到 for 循環(huán)的條件語(yǔ)句中 貼士:我的個(gè)人做法

                  QUOTE:

                  復(fù)制代碼 代碼如下:

                  // PHP CODE Highliting for CU by dZ902

                  <?php

                  for ($i = 0, $max = count($array);$i $max; ++$i);

                  ?>

                  效率提升相對(duì)于:

                  - count 50%

                  - strlen 75%

                  短的代碼不一定快

                  QUOTE:

                  復(fù)制代碼 代碼如下:

                  // PHP CODE Highliting for CU by dZ902

                  <?php

                  // longest

                  if ($a == $b) {

                  $str .= $a;

                  } else {

                  $str .= $b;

                  }

                  // longer

                  if ($a == $b) {

                  $str .= $a;

                  }

                  $str .= $b;

                  // short

                  $str .= ($a == $b ? $a : $b);

                  ?>

                  你覺(jué)得哪個(gè)快,

                  效率比較:

                  - longest: 4.27

                  - longer: 4.43

                  - short: 4.76

                  不可思議,再來(lái)一個(gè):

                  QUOTE:

                  復(fù)制代碼 代碼如下:

                  // PHP CODE Highliting for CU by dZ902

                  <?php

                  // original

                  $d = dir('.');

                  while (($entry = $d- read()) !== false) {

                  if ($entry == '.' || $entry == '..') {

                  continue;

                  }

                  }

                  // versus

                  glob('./*');

                  // versus (include . and ..) scandir('.');

                  ?>

                  哪個(gè)快, 效率比較:

                  - original: 3.37

                  - glob: 6.28

                  - scandir: 3.42

                  - original without OO: 3.14

                  - SPL (PHP5): 3.95

                  畫(huà)外音:從此也可以看出來(lái) PHP5 的面向?qū)ο笮侍岣吡撕芏?,效率已?jīng)和純

                  函數(shù)差得不太多了。

                  提高 PHP 文件訪問(wèn)效率

                  需要包含其他 PHP 文件的時(shí)候,使用完整路徑,或者容易轉(zhuǎn)換的相對(duì)路徑。 QUOTE:

                  復(fù)制代碼 代碼如下:

                  // PHP CODE Highliting for CU by dZ902

                  <?php

                  include 'file.php';

                  // bad approach incldue './file.php';

                  // good include '/path/to/file.php';

                  // ideal

                  ?>

                  物盡其用

                  PHP 有很多擴(kuò)展和函數(shù)可用,在實(shí)現(xiàn)一個(gè)功能的之前,應(yīng)該看看 PHP 是否有了這個(gè)功能,是否有更簡(jiǎn)單的實(shí)現(xiàn),

                  QUOTE:

                  復(fù)制代碼 代碼如下:

                  // PHP CODE Highliting for CU by dZ902

                  <?php

                  $filename = "./somepic.gif";

                  $handle = fopen($filename, "rb");

                  $contents = fread($handle, filesize($filename));

                  fclose($handle);

                  // vs. much simpler

                  file_get_contents('./somepic.gif');

                  ?>

                  關(guān)于引用的技巧

                  引用可以:

                  - 簡(jiǎn)化對(duì)復(fù)雜結(jié)構(gòu)數(shù)據(jù)的訪問(wèn)

                  - 優(yōu)化內(nèi)存使用

                  QUOTE:

                  復(fù)制代碼 代碼如下:

                  // PHP CODE Highliting for CU by dZ902

                  <?php

                  $a['b']['c'] = array();

                  // slow 2 extra hash lookups per access

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

                  $a['b']['c'][$i] = $i;

                  // much faster reference based approach

                  $ref =& $a['b']['c'];

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

                  $ref[$i] = $i;

                  ?>

                  QUOTE:

                  復(fù)制代碼 代碼如下:

                  // PHP CODE Highliting for CU by dZ902

                  ?php

                  $a = 'large string';

                  // memory intensive approach function a($str)

                  {

                  return $str.'something';

                  }

                  // more efficient solution function a(&$str)

                  {

                  $str .= 'something';

                  }

                  ?>

                  


          php函數(shù)快速查詢PHP購(gòu)物車類Cart.class.php定義與用法
          php加iis服務(wù)器搭建PHP的運(yùn)行環(huán)境PHP實(shí)例說(shuō)明編寫(xiě)PHP代碼的5個(gè)好習(xí)慣
          提高PHP編程效率引入緩存機(jī)制提升性能如何在本地搭建php環(huán)境
          PHP陽(yáng)歷轉(zhuǎn)農(nóng)歷的類PHP模板引擎smarty進(jìn)門
          PHP中多態(tài)如何實(shí)現(xiàn)PHP執(zhí)行系統(tǒng)外部命令
          通過(guò) PDO 將 PHP 連接到 DB2 和 Cloudscapephp多進(jìn)程編程實(shí)例
          PHP高效率寫(xiě)法OOP的PHP長(zhǎng)啥樣
          絕對(duì)簡(jiǎn)單易學(xué)的PHP入門教程自己寫(xiě)的php模板引擎
          信息發(fā)布:廣州名易軟件有限公司 http://www.jetlc.com
          • 勁爆價(jià):
            不限功能
            不限用戶
            1998元/年

          • 微信客服

            <output id="r87xx"></output>
          1. 
            
            <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
              • 豆花视频成人版网站入口 | 天堂а√在线中文在线新版 | 港台靓女性啪啪天美传媒精品性88xo | 成人无码电影在线观看 | 苍进空一区二区三区 | 操操小骚逼 | 美女大屄在线 | 无码免费在线观看视频 | 老司机大香蕉 | 内射美女网站 |