《PHP實戰(zhàn):PHP中使用hidef擴展代替define提高性能》要點:
本文介紹了PHP實戰(zhàn):PHP中使用hidef擴展代替define提高性能,希望對您有用。如果有疑問,可以聯(lián)系我們。
PHP實例網(wǎng)站需要新加一個常量,打開了本地的config.php文件,想到了幾年前測試過的hidef以及apc提升define性能的方案.
我的程序中有對開發(fā)、測試、生產(chǎn)服務(wù)器分別做了不同的配置,在常量方面則使用了一個數(shù)組定義了所有需要定義的常量,然后檢測是否有apc_load_constants函數(shù),沒有的話,批量define.使用apc時,每增加一個常量,還需要修改一下$key才能生效.
PHP實例而現(xiàn)在測試、生產(chǎn)服務(wù)器php都升級到5.4后,opcode緩存就使用了Zend opcache,不再安裝APC.因為有用到apc user cache,因此額外裝了apcu,和apc用法一模樣,完全不用改程序.而apcu不支持apc_load_constants和apc_define_constants,因此apc這個方案就無法用了.去官網(wǎng)裝了最新版hidef 0.1.13,2012-7-12發(fā)布的stable,一年多了.
PHP實例寫了個簡單程序測試define化的時間,大概運行1000次需要2.8ms.那么對于一個中型網(wǎng)站(例如一天php運行1000w次)來說,如果每頁定義25個常量,大概每天需要化 10000000*25/1000*2.8=700000ms,就是700秒.差不多使用hidef可以一天節(jié)省700s的PHP運行時間.
再看看讀的性能好了,測試讀1w次一個常量,值都是1,分別是37ms和0.7ms.那么如果一天1000w次,每頁平均使用20個常量,則需要740秒,而使用hidef是14秒,好吧,又一個700多秒.
一天省1400秒php運行時間,也許是還是微不足道,但總是好的,也是值的嘗試的,畢竟define的參數(shù)變化的機率非常少.
當(dāng)define參數(shù)需要修改時,修改配置文件,然后重載下php-fpm,就好了.
PHP實例hidef具體安裝方法參見:提高define性能的php擴展hidef的安裝和使用
PHP實例在百度里搜索“hidef”,排第3位的是一個copy我博文的網(wǎng)站:( 而我自己發(fā)布的提高define性能的php擴展hidef的安裝和使用在前三頁沒有找到.顯然是百度對原創(chuàng)的識別出了些偏差.
PHP實例百度搜索“hidef php”,那個網(wǎng)址排第一,第二是官網(wǎng),我的在第三.
gg搜索“hidef php”,第一官網(wǎng),第3是另一篇原創(chuàng),我的在第四.gg的識別就不錯!
PHP實例360搜索"hidef php",第一那個copy站,第二我的,第三另一篇原創(chuàng).
因此有了這篇的誕生,看看能不能幫第一篇排上去或者這篇排上去也行.
PHP實例
附原配置常量的程序示例代碼:
PHP實例??????????? }
??????? } else {
??????????? function define_array($key, $arr, $case_sensitive = false) {
??????????????? foreach ($arr as $name => $value) {
??????????????????? define($name, $value, $case_sensitive);
??????????????? }
??????????? }
??????? }
PHP實例??????? $constants = array(
??????????? 'HX'?? => 1,
??????????? 'BLOG_URL'?? => '/',
??????????? 'WWW_URL'?? => '/',
??????? );
PHP實例??????? define_array('hx_defined',$constants);
PHP實例
附測試define速度的代碼.
PHP實例$t1 = microtime(1);
PHP實例??? $constants = array(
??????? 'hx1'?????? => 1,
??????? 'hx2'?????? => '2',
??????? 'hx3'?????? => '3',
??????? 'hx4'?????? => '4',
??????? 'hx5'?????? => '5',
??????? 'hx6'?????? => '6',
??????? 'hx7'?????? => '7',
??????? 'hx8'?????? => '8',
??????? 'hx9'?????? => '9',
??????? 'hx10'?????? => '10',
??? );
PHP實例??? function define_array($key, $arr) {
??????? foreach ($arr as $name => $value) {
??????????? define($name.$i, $value);
??????? }
??? }
???
??? for($i=0;$i<100;$i++) {
??????? define_array($i,$constants);
??? }
???
???
$t2 = microtime(1);
echo ($t2-$t1)*1000;
PHP實例//讀性能
$t1 = microtime(1);
for($i=0;$i<10000;$i++) {
??? $t = hx1;
}???
$t2 = microtime(1);
echo ' '.($t2-$t1)*1000;
PHP實例$t1 = microtime(1);
for($i=0;$i<10000;$i++) {
??? $t = HX;
}???
$t2 = microtime(1);
echo ' '.($t2-$t1)*1000;
歡迎參與《PHP實戰(zhàn):PHP中使用hidef擴展代替define提高性能》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/11080.html