提高define性能的php扩展hidef的安装和使用

 更新时间:2011年06月14日 21:38:43   作者:  
在apache启动前,PHP启动时创建并初始化了这些常量,这样就不需要在php里define常量了,性能自然没有任何问题了!
官网:http://pecl.php.net/package/hidef
简介:
  Allow definition of user defined constants in simple ini files, which are then processed like internal constants, without any
of the usual performance penalties.
  允许使用简单的ini文件来定义需要的常量,就像使用内部变量一样,而且没有使用Define的性能问题。

作者说Hidef is initialized in php module init, before apache starts spawning children.
在apache启动前,PHP启动时创建并初始化了这些常量,这样就不需要在php里define常量了,性能自然没有任何问题了!
在Nginx下同样可用,以下是安装过程:

1、下载并解压进入目录

# wget http://pecl.php.net/get/hidef-0.1.8.tgz
# tar zxvf hidef-0.1.8.tgz
# cd hidef-0.1.8

2、没有configure文件,执行phpize创建该文件

# /usr/local/webserver/php/bin/phpize
# ./configure --enable-hidef --with-php-config=/usr/local/webserver/php/bin/php-config
# make
# make install

3、添加到php.ini文件里面

# vi /usr/local/webserver/php/etc/php.ini

-----------------------------------------------
extension=hidef.so
hidef.ini_path=/usr/local/webserver/php/etc/
------------------------------------------------------------------------------

注意,如果php.ini文件里面没有定义hidef.ini_path,则默认.ini文件读取位置为/hidef,只需手工创建文件 vi /hidef/hidef.ini即可。

# vi /usr/local/webserver/php/etc/hidef.ini(此处根据情况自己调整路径)
复制代码 代码如下:

[hidef]
int ANSWER = 42;
str HX = "9enjoy";
float PIE = 3.14159;

这里整数用int,浮点数用float,字符串用str。
字符串str的值使用双引号来包含,或者直接写字符串内容。如果使用单引号,将会把单引号也做为字符串的内容。
如str HX='9enjoy',实际存储的不是9enjoy,是'9enjoy'。

4、重新加载php-fpm即可

# /usr/local/webserver/php/sbin/php-fpm reload

此时,查看phpinfo()的结果,在hidef处就可以看到定义的变量。


-----------------------------------------------------------------------------

附:

如果使用了APC,apc提供了定义常量的方法。apc_define_constants和apc_load_constants。apc_define_constants将常量转为数组存到一个user cache中。虽然把常量存在了内存中,但每次PHP请求时,仍然需要读cache,分别定义,因此也不会有什么明显的性能提升。我测试了下定义25个常量,使用apc的函数比直接定义常量快了0.01ms。

这样使用:
if(!apc_load_constants('defined')) {
    $constants = array(
        'HX'   => TRUE,
        'D_BUG' => 1
    );
    apc_define_constants('defined', $constants);
}

define() is notoriously slow. Since the main benefit of APC is to increase the performance of scripts/applications, this mechanism is provided to streamline the process of mass constant definition. However, this function does not perform as well as anticipated.

For a better-performing solution, try the hidef extension from PECL.

APC的文档中推荐使用hidef。

相关文章

  • 几个实用的PHP内置函数使用指南

    几个实用的PHP内置函数使用指南

    本文给大家推荐了7个不经常被用到,但实际很实用,功能很强大的php内置函数,用好了,可以省去小伙伴们很多的时间的。
    2014-11-11
  • Windows平台实现PHP连接SQL Server2008的方法

    Windows平台实现PHP连接SQL Server2008的方法

    这篇文章主要介绍了Windows平台实现PHP连接SQL Server2008的方法,结合实例形式分析了Windows平台PHP连接SQL Server2008所需的相关dll动态链接库文件及相应的配置与使用方法,需要的朋友可以参考下
    2017-07-07
  • Thinkphp无限级分类代码

    Thinkphp无限级分类代码

    这篇文章主要介绍了Thinkphp无限级分类代码,无限级分类真的很重要了,我不会写怎么办?本篇就一步步告诉大家如何制作无限级分类,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • PHP判断图片格式的七种方法小结

    PHP判断图片格式的七种方法小结

    图片上传是网站常用的程序模块,本文浅析php判断图片后缀格式的7种方式
    2013-06-06
  • PHP常用的三种设计模式

    PHP常用的三种设计模式

    本文为大家介绍常用的三种php设计模式:单例模式、工厂模式、观察者模式,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • PHP IPV6正则表达式验证代码

    PHP IPV6正则表达式验证代码

    IPV6的时代快要到来了,发一个验证IPV6地址是否合法的正则。
    2010-02-02
  • php汉字转拼音的示例

    php汉字转拼音的示例

    这篇文章主要介绍了php汉字转拼音的示例,需要的朋友可以参考下
    2014-02-02
  • PHP中CakePHP添加数据库实例方法

    PHP中CakePHP添加数据库实例方法

    在本篇文章里小编给大家整理的一篇关于PHP中CakePHP添加数据库实例方法,对此有兴趣的朋友们可以学习下。
    2021-01-01
  • PHP获取文件扩展名的方法实例总结

    PHP获取文件扩展名的方法实例总结

    这篇文章主要介绍了PHP获取文件扩展名的方法,结合实例形式总结了6种常用的文件扩展名获取方法,代码备有较为详细的注释便于理解,需要的朋友可以参考下
    2017-06-06
  • ueditor 1.2.6 使用方法说明

    ueditor 1.2.6 使用方法说明

    以下文本是以php版本为例的,对ueditor 1.2.6的使用方法进行了详细的说明介绍,需要的朋友可以过来参考下
    2013-07-07

最新评论