X 提示语:您的IE浏览器版本太低,部分重要功能无法体验或使用,请升级到IE8以上或者使用火狐、谷歌浏览器,浏览器下载:IE8火狐浏览器谷歌浏览器
PHP中使用hidef扩展代替define提高性能
发布时间:2020-06-29 09:56:05    来源:容大互联

网站需要新加一个常量,打开了本地的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的安装和使用


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


百度搜索“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'   => '//www.jb51.net/',
            'WWW_URL'   => '//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;

 


文章来源:网络。如侵犯你的版权,请联系我们的客服人员,我们会第一时间删除文章。



容大互联推荐阅读:

 

虚拟化成为IT技术发展新趋势

  当前,虚拟化技术的优势已经得到了业界的普遍认可,虚拟化技术所具备的提高资源利用率和节能环保的特性也得到了越来越多高性能计算机用户的青睐,虚拟化技术的普及和推广成为信息化技术发展的必然趋势。  据业内专家分析,三个方面的因素使虚拟化技术迅

JavaScript解析:让搜索引擎看到更真实的网页

  长期以来,站长们选择使用JavaScript来实现网页的动态行为,这样做的原因是多种多样的,如加快页面的响应速度、降低网站流量、隐藏链接或者嵌入广告等。由于早期的搜索引擎没有相应的处理能力,导致在索引这类网页上往往出现问题,可能无法收录

浅析企业该怎么做事件营销

百度权重查询站长交易友情链接交换网站建设,网站设计,企业建站就找313现在的互联网上啊,大家都喜欢炒作。无论个人,还是企业,用尽九牛二虎之力都想出名。大家都知道炒作的演变模式从美女-冲突-眼球-商业一路演变过来,何其艰辛啊。个人炒作来说,前


本文来自容大互联,专业的云计算数据中心服务商,国家高新技术企业,16年的专业深圳服务器托管、大带宽出售、光纤专线接入、云服务器等行业沉淀,提供高性价比的产品和优秀的技术服务,赢得数十万用户的青睐。

为什么选择我们
  • 19年品质

    专业服务团队,19年运营经验,值得信赖
  • 高新企业

    国家高新技术企业,深圳行业唯一
  • 双软企业

    深圳市“双软”企业,技术可靠
  • 全程服务

    7X24小时全程服务,不仅仅只是销售产品