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


Posted in PHP onJune 14, 2011

官网: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处就可以看到定义的变量。
提高define性能的php扩展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 相关文章推荐
判“新”函数:得到今天与明天的秒数
Oct 09 PHP
php+mysql开源XNA 聚合程序发布 下载
Jul 13 PHP
php字符串截取中文截取2,单字节截取模式
Dec 10 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
Nov 10 PHP
解析php中session的实现原理以及大网站应用应注意的问题
Jun 17 PHP
纯PHP生成的一个树叶图片画图例子
Apr 16 PHP
PHP获取服务器端信息的方法
Nov 28 PHP
PHP微信开发之二维码生成类
Jun 26 PHP
PHP多维数组转一维数组的简单实现方法
Dec 23 PHP
PhpStorm terminal无法输入命令的解决方法
Oct 09 PHP
PHP中empty,isset,is_null用法和区别
Feb 19 PHP
php数值计算num类简单操作示例
May 15 PHP
php学习笔记 php中面向对象三大特性之一[封装性]的应用
Jun 13 #PHP
php学习笔记 面向对象的构造与析构方法
Jun 13 #PHP
php学习笔记 类的声明与对象实例化
Jun 13 #PHP
php学习笔记 PHP面向对象的程序设计
Jun 13 #PHP
php学习笔记 数组的常用函数
Jun 13 #PHP
PHP中的函数嵌套层数限制分析
Jun 13 #PHP
PHP5中新增stdClass 内部保留类
Jun 13 #PHP
You might like
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
从零开始 教你如何搭建Discuz!4.1论坛
2006/07/07 PHP
PHP开发中常用的8个小技巧
2008/08/27 PHP
PHP 存储文本换行实现方法
2010/01/05 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
2014/10/23 PHP
PHP中error_reporting函数用法详细介绍
2017/06/11 PHP
JavaScript 开发规范要求(图文并茂)
2010/06/11 Javascript
用jquery实现的模拟QQ邮箱里的收件人选取及其他效果(一)
2011/01/06 Javascript
找出字符串中出现次数最多的字母和出现次数精简版
2012/11/07 Javascript
jquery异步跨域访问代码
2013/06/28 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
使用JavaScript实现点击循环切换图片效果
2017/09/03 Javascript
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
python常用函数详解
2016/09/13 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
python+Splinter实现12306抢票功能
2018/09/25 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
基于Python实现签到脚本过程解析
2019/10/25 Python
opencv python如何实现图像二值化
2020/02/03 Python
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
软件测试工程师笔试题带答案
2015/03/27 面试题
土木建筑学生自我评价
2014/01/14 职场文书
生日主持词
2014/03/20 职场文书
综合素质评价思想道德自我评价
2015/03/09 职场文书
2015年行风建设工作总结
2015/05/15 职场文书
2016七一建党节慰问信
2015/11/30 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书
Python 如何实现文件自动去重
2021/06/02 Python
解析Java异步之call future
2021/06/14 Java/Android
Python实现单例模式的5种方法
2021/06/15 Python