加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP中使用hidef扩展代替define提高性能

发布时间:2020-12-13 02:33:34 所属栏目:PHP教程 来源:网络整理
导读:《PHP实战:PHP中使用hidef扩展代替define提高性能》要点: 本文介绍了PHP实战:PHP中使用hidef扩展代替define提高性能,希望对您有用。如果有疑问,可以联系我们。 PHP实例 网站需要新加一个常量,打开了本地的config.php文件,想到了几年前测试过的hidef以及

《PHP实战:PHP中使用hidef扩展代替define提高性能》要点:
本文介绍了PHP实战:PHP中使用hidef扩展代替define提高性能,希望对您有用。如果有疑问,可以联系我们。

PHP实例网站需要新加一个常量,打开了本地的config.php文件,想到了几年前测试过的hidef以及apc提升define性能的方案.
我的程序中有对开发、测试、生产服务器分别做了不同的配置,在常量方面则使用了一个数组定义了所有需要定义的常量,然后检测是否有apc_load_constants函数,没有的话,批量define.使用apc时,每增加一个常量,还需要修改一下$key才能生效.

PHP实例而现在测试、生产服务器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,一年多了.

PHP实例写了个简单程序测试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,就好了.

PHP实例hidef具体安装方法参见:提高define性能的php扩展hidef的安装和使用

PHP实例在百度里搜索“hidef”,排第3位的是一个copy我博文的网站:( 而我自己发布的提高define性能的php扩展hidef的安装和使用在前三页没有找到.显然是百度对原创的识别出了些偏差.

PHP实例百度搜索“hidef php”,那个网址排第一,第二是官网,我的在第三.
gg搜索“hidef php”,第一官网,第3是另一篇原创,我的在第四.gg的识别就不错!

PHP实例360搜索"hidef php",第一那个copy站,第二我的,第三另一篇原创.
因此有了这篇的诞生,看看能不能帮第一篇排上去或者这篇排上去也行.

PHP实例
附原配置常量的程序示例代码:

代码如下:

? 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,$case_sensitive);
??????????????? }

PHP实例??????????? }
??????? } else {
??????????? function define_array($key,$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

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实战:PHP中使用hidef扩展代替define提高性能》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读