**需要新加乙個常量,開啟了本地的config.php檔案,想到了幾年前測試過的hidef以及apc提公升define效能的方案。
我的程式中有對開發、測試、生產伺服器分別做了不同的配置,在常量方面則使用了乙個陣列定義了所有需要定義的常量,然後檢測是否有apc_load_constants函式,沒有的話,批量define。使用apc時,每增加乙個常量,還需要修改一下$key才能生效。
而現在測試、生產伺服器php都公升級到5.4後,opcode快取就使用了zend opcache,不再安裝apc。因為有用到apc user cache,因此額外裝了apcu,和apc用法一模樣,完全不用改程式。而apcu不支援apc_load_constants和apc_define_constants,因此apc這個方案就無法用了。去官網裝了最新版hidef 0.1.13,2012-7-12發布的stable,一年多了。
寫了個簡單程式測試define化的時間,大概執行1000次需要2.8ms。那麼對於乙個中型**(例如一天php執行1000w次)來說,如果每頁定ulysc義25個常量,大概每天需要化 10000000*25/1000*2.8=700000ms,就是700秒。差不多使用hidef可以一天節省700s的php執行時間。
再看看讀的效能好了,測試讀1w次乙個常量,值都是1,分別是37ms和0.7ms。那麼如果一天1000w次,每頁平均使用20個常量,則需要740秒,而使用hidef是14秒,好吧,又乙個700多秒。
一天省1400秒php執行時間,也許是還是微不足道,但總是好的,也是值的嘗試的,畢竟define的引數變化的機率非常少。
當define引數需要修改時,修改配置檔案,然後過載下php-fpm,就好了。
hidef具體安裝方法參見:提高define效能的php擴充套件hidef的安裝和使用
在百度裡搜尋「hidef」,排第3位的是乙個copy我博文的**:( 而我自己發布的提高define效能的php擴充套件hidef的安裝和使用在前三頁沒有找到。顯然是百度對原創的識別出了些偏差。
百度搜尋「hidef php」,那個**排第一,第二是官網,我的在第三。
gg搜尋「hidef php」,第一官網,第3是另一篇原創,我的在第四。gg的識別就不錯!
360搜尋"hidef php",第一那個copy站,第二我的,第三另一篇原創。
因此有了這篇的誕生,看看能不能幫第一篇排上去或者這篇排上去也行。
附原配置常量的程式示例**:
複製** **如下:
if (function_exists('apc_load_constants'))
}} else }}
$constants = array(
'hx' => 1,
'blog_url' => '',
'www_url' => '',
);define_array('hx_defined',$constants);
附測試define速度的**。
複製** **如下:
<?php
$t1 = microtime(1);
$constants = array(
'hx1' => 1,
'hx2' &nulyscbsp; => '2',
'hx3' => '3',
'hx4' => '4',
'hx5' => '5',
'hx6' => '6',
'hx7' => '7',
'hx8' => '8',
'hx9' => '9',
'hx10' &nbsulyscp; => '10',
);function define_array($key, $arr)
}for($i=0;$i<100;$i++)
$t2 = microtime(1);
echo ($t2-$t1)*1000;
//讀效能
$t1 = microtime(1);
for($i=0;$i<10000;$i++)
$t2 = microtime(1);
echo ' '.($t2-$t1)*1000;
$t1 = microtime(1);
for($i=0;$i<10000;$i++)
$t2 = microtime(1);
echo ' '.($t2-$t1)*1000;
本文標題: php中使用hidef擴充套件代替define提高效能
本文位址:
在php中使用函式代替require操作
在 php 中,為了減少重複 常常需要包含 heade 和 footer,我們最長使用的操作就是,require 或者 reqire once等 但是我們可以用另一種方式來實現這種包含,寫乙個函式,比如 printheader 如下所示,看起來似乎一行 變成兩行更麻煩了,但是卻可以實現一些額外的效果...
在PHP中使用UUID擴充套件的函式
環境 centos linux release 7.7.1908 core php 7.3.11 uuid extention 1.0.4 感覺上php對uuid的支援似乎不是很上心,pecl中的uuid擴充套件僅僅是對libuuid的打包,並沒有像其他語言那樣直接提供完整的uuid實現。由於lib...
php中使用mysql介紹 PHP中使用MySQL
mysql資料庫的擴充套件 擴充套件庫基本功能相似,用法基本相同,會增加一些新的特性 mysqli擴充套件庫 只能對mysql資料庫操作 pdo擴充套件 可以操作很多態別的資料庫 wamp下修改mysql資料庫密碼 三者在建立連線上的比較 pdo需要四個引數,除了資料庫管理員名稱 密碼 host 還...