PHP中使用hidef扩展代替define提高性能
2015-04-09 14:01
429 查看
这篇文章主要介绍了PHP中运用hidef拓展替代define进步功能,这篇文章着重测验hidef的功能,一起介绍了装置办法和运用示例,需求的兄弟能够参阅下
网站需求新加一个常量,打开了本地的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次)来说,假如每页界说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的装置和运用
在baidu里查找“hidef”,排第3位的是一个copy我博文的网站:( 而我自个发布的进步define功能的php拓展hidef的装置和运用在前三页没有找到。显然是baidu对自创的辨认出了些误差。
baidu查找“hidef php”,那个网址排榜首,第二是官网,我的在第三。
gg查找“hidef php”,榜首官网,第3是另一篇自创,我的在第四。gg的辨认就不错!
360查找"hidef php",榜首那个copy站,第二我的,第三另一篇自创。
因而有了这篇的诞生,看看能不能帮榜首篇排上去或许这篇排上去也行。
附原配置常量的程序示例代码:
if (function_exists('apc_load_constants')) {
function define_array($key, $arr, $case_sensitive = false) {
if (!apc_load_constants($key, $case_sensitive)) {
apc_define_constants($key, $arr, $case_sensitive);
}
}
} else {
function define_array($key, $arr, $case_sensitive = false) {
foreach ($arr as $name => $value) {
define($name, $value, $case_sensitive);
}
}
}
$constants = array(
'HX' => 1,
'BLOG_URL' => 'http://www.jb51.net/',
'WWW_URL' => 'http://www.jb51.net/',
);
define_array('hx_defined',$constants);
附测试define速度的代码。代码如下:
<?php
$t1 = microtime(1);
$constants = array(
'hx1' => 1,
'hx2' => '2',
'hx3' => '3',
'hx4' => '4',
'hx5' => '5',
'hx6' => '6',
'hx7' => '7',
'hx8' => '8',
'hx9' => '9',
'hx10' => '10',
);
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;
//读性能
$t1 = microtime(1);
for($i=0;$i<10000;$i++) {
$t = hx1;
}
$t2 = microtime(1);
echo ' '.($t2-$t1)*1000;
$t1 = microtime(1);
for($i=0;$i<10000;$i++) {
$t = HX;
}
$t2 = microtime(1);
echo ' '.($t2-$t1)*1000;
网站需求新加一个常量,打开了本地的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次)来说,假如每页界说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的装置和运用
在baidu里查找“hidef”,排第3位的是一个copy我博文的网站:( 而我自个发布的进步define功能的php拓展hidef的装置和运用在前三页没有找到。显然是baidu对自创的辨认出了些误差。
baidu查找“hidef php”,那个网址排榜首,第二是官网,我的在第三。
gg查找“hidef php”,榜首官网,第3是另一篇自创,我的在第四。gg的辨认就不错!
360查找"hidef php",榜首那个copy站,第二我的,第三另一篇自创。
因而有了这篇的诞生,看看能不能帮榜首篇排上去或许这篇排上去也行。
附原配置常量的程序示例代码:
if (function_exists('apc_load_constants')) {
function define_array($key, $arr, $case_sensitive = false) {
if (!apc_load_constants($key, $case_sensitive)) {
apc_define_constants($key, $arr, $case_sensitive);
}
}
} else {
function define_array($key, $arr, $case_sensitive = false) {
foreach ($arr as $name => $value) {
define($name, $value, $case_sensitive);
}
}
}
$constants = array(
'HX' => 1,
'BLOG_URL' => 'http://www.jb51.net/',
'WWW_URL' => 'http://www.jb51.net/',
);
define_array('hx_defined',$constants);
附测试define速度的代码。代码如下:
<?php
$t1 = microtime(1);
$constants = array(
'hx1' => 1,
'hx2' => '2',
'hx3' => '3',
'hx4' => '4',
'hx5' => '5',
'hx6' => '6',
'hx7' => '7',
'hx8' => '8',
'hx9' => '9',
'hx10' => '10',
);
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;
//读性能
$t1 = microtime(1);
for($i=0;$i<10000;$i++) {
$t = hx1;
}
$t2 = microtime(1);
echo ' '.($t2-$t1)*1000;
$t1 = microtime(1);
for($i=0;$i<10000;$i++) {
$t = HX;
}
$t2 = microtime(1);
echo ' '.($t2-$t1)*1000;
相关文章推荐
- PHP中使用hidef扩展代替define提高性能
- 提高define性能的php扩展hidef的安装和使用
- 提高define性能的php扩展hidef的安装和使用
- 让浏览器提高缓存效率,使用HTTP_IF_MODIFIED_SINCE缓存提高PHPWEB性能
- PHP使用连接池提高性能(mysql不需要,Oracle连接速度很慢)
- php使用memcache提高性能
- 使用Zend OpCache 提高 PHP 5.5+ 性能
- 使用标准数据绑定语法代替 DataBinder.Eval 方法以提高性能
- PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
- PHP通过JAVA桥使用连接池提高性能
- 在PHP中使用memcached提高动态网站性能
- php中使用memcache扩展的性能问题
- 使用缓存提高Web应用系统性能
- 通过使用类型库提高VB调用DLL函数的性能
- 使用内存映射文件来提高你程序的性能
- 使用异步 I/O 大大提高应用程序的性能
- 使用异步 I/O 大大提高应用程序的性能
- 使用内存映射文件来提高你程序的性能
- CListCtrl使用小技巧,CListView的加载性能提高80%
- 使用内存映射文件来提高你程序的性能