菜单

PHP中使用hidef扩大替代define提升品质_php技巧_脚本之家

2020年1月27日 - 新闻中心

网址须要新加三个常量,张开了本地的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,二零一一-7-12发布的stable,一年多了。

写了个简易程序测量试验define化的年月,差不离运维1000次索要2.8ms。那么对于贰个比十分的小比十分大网址的话,假使每页定义贰十七个常量,差不离每日需求化
10000000*25/1000*2.8=700000ms,正是700秒。大约使用hidef能够一天节省700s的PHP运维时刻。再看看读的属性好了,测验读1w次叁个常量,值都是1,分别是37ms和0.7ms。那么后生可畏旦一天1000w次,每页平均利用19个常量,则供给740秒,而使用hidef是14秒,行吗,又四个700多秒。一天省1400秒php运转时刻,恐怕是仍然开玩笑,但总是好的,也是值的尝尝的,毕竟define的参数变化的机率比少之又少。当define参数必要改良时,更改配置文件,然后重载下php-fpm,就好了。

hidef具体安装格局参见:升高define质量的php扩充hidef的设置和选择

在百度里找出“hidef”,排第一位的是一个copy小编博文的网址:(
而作者要好公布的增高define品质的php扩展hidef的装置和选取在前三页未有找到。显著是百度对原创的辨认出了些偏差。

百度搜索“hidef
php”,那几个网站排第风流倜傥,第二是官方网站,小编的在第三。gg寻觅“hidef
php”,第一官方网址,第3是另黄金时代篇原创,我的在第四。gg的辨识就正确!

360招来”hidef
php”,第大器晚成充分copy站,第二本人的,第三另黄金年代篇原创。由此有了那篇的出生,看看能还是不可能帮第生龙活虎篇排上去或然那篇排上去也行。

附原配置常量的前后相继示例代码:复制代码
代码如下: if (function_exists) { 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’ => ‘//www.jb51.net/’,
‘WWW_URL’ => ‘//www.jb51.net/’, );

define_array(‘hx_defined’,$constants);

附测量试验define速度的代码。复制代码
代码如下:

$t1 = microtime;

$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 { foreach ($arr as $name => $value) { define;
} } for { define_array; } $t2 = microtime*1000;

//读性能$t1 = microtime;for { $t = hx1;} $t2 = microtime*1000;

$t1 = microtime;for { $t = HX;} $t2 = microtime*1000;

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图