今天看啥
热点:

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常量了,性能自然没有任何问题了!
 

 

hidef的安装配置过程图解

 在iis环境中安装hidef的扩展这里就不介绍了,这里主要介绍下面介绍一下在nginx环境下安装hidef扩展的方法:

1、下载、解压并进入目录
 

[root@localhost ~]# wget http://pecl.php.net/get/hidef-0.1.8.tgz
[root@localhost ~]# tar -zxvf hidef-0.1.8.tgz
[root@localhost ~]# cd hidef-0.1.8


这里下载的是0.1.8版本,官方最新版本为0.1.13

2、安装编译
 

[root@localhost hidef-0.1.8]# /usr/local/php/bin/phpize
[root@localhost hidef-0.1.8]# ./configure --enable-hidef --with-php-config=/usr/local/php/bin/php-config
[root@localhost hidef-0.1.8]# make && make install


安装完成后,有这样的提示:

 

 

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/


3、修改php配置文件php.ini,添加hidef扩展

 

 

; Directory in which the loadable extensions (modules) reside.
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
extension = "memcache.so"
extension = "pdo_mysql.so"
extension = "hidef.so"
hidef.ini_path=/usr/local/webserver/php/etc/


注意:这里除了添加hidef扩展文件信息外,我们还可以定义hidef.ini_path的位置。如果没有定义hidef.ini_path信息,则默认hidef.ini文件位置为/hidef目录,这里我们只需要手动创建/hidef目录即可。

4、编辑hidef.ini配置文件(此处根据情况自己调整路径)
 

[root@localhost hidef-0.1.8]# vi /usr/local/webserver/php/etc/hidef.ini


添加如下内容:

 

 

[hidef]
int AGE = 42;
str NAME = "PHP230";
float PRICE = 3.14159;


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

5、重载php-fpm
 

[root@localhost hidef]# /etc/init.d/php-fpm reload


6、通过phpinfo查看刚才定义的常量是否生效:

 

php-hidef

我们可以看到在phpinfo信息中显示了我们刚才定义的3个常量,说明已经生效了,这样我们就可以直接在php文件中进行使用了。

hidef相关延伸介绍

 

用apc_define_constants可以提升批量define的性能,但是每个请求,都免不了进行 读cache -> 批量define 这样一个过程,因此,这也算不上提升define性能的终极手段。

在翻看apc的手册时,无意中看到有这么一小段介绍:

	

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


这里提到了一个叫hidef的扩展,看说明上的意思,应该是可以通过ini文件来批量定义常量。

	

Allow definition of user defined constants in simple ini files, which are then processed like internal constants, without any of the usual performance penalties.


hidef的使用

首先需要定义一个ini文件,里面需要定义常量的基本类型

[hidef]
float PIE = 3.14159;
int ANSWER = 42;

然后apache启动的时候,会初始化这些常量,这样就不用每个php进程来重复定义常量了。

性能真的有提升么

作者做了一个测试,用传统define和hidef分别定义了320个常量。成绩分别是

	

380.785 fetches/sec vs 930.783 fetches/sec


如果有安装apc的话,那么性能会有小小提升,成绩分别为

	

976.29 fetches/sec vs 1519.38 fetches/sec


可以看出hidef能够大大提升批量define的性能,对php的性能优化很有帮助。

BTW:这个扩展的作者是Gopal Vijayaraghavan,也就是apc的作者之一。

原文来源:帮客之家 原文地址:http://www.bkjia.com/jingyan/hidef.html

评论暂时关闭