提高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 相关文章推荐
phpmyadmin操作流程
Oct 09 PHP
PHP编程之高级技巧——利用Mysql函数
Oct 09 PHP
使用PHP函数scandir排除特定目录
Jun 12 PHP
深入分析PHP引用(&)
Sep 04 PHP
php实现扫描二维码根据浏览器类型访问不同下载地址
Oct 15 PHP
PHP基于MySQL数据库实现对象持久层的方法
Jun 17 PHP
百度地图API使用方法详解
Aug 25 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
Jan 17 PHP
THINKPHP在添加数据的时候获取主键id的值方法
Apr 03 PHP
自制PHP框架之模型与数据库
May 07 PHP
php从数据库读取数据,并以json格式返回数据的方法
Aug 21 PHP
Yii 实现数据加密和解密
Mar 09 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
php类的自动加载操作实例详解
2016/09/28 PHP
phpstudy后门rce批量利用脚本的实现
2019/12/12 PHP
JavaScript 字符编码规则
2009/05/04 Javascript
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
jquery多选项卡效果实例代码(附效果图)
2013/03/23 Javascript
jquery实现多级下拉菜单的实例代码
2013/10/02 Javascript
JavaScript实现下拉菜单的显示和隐藏
2016/01/05 Javascript
JavaScript基于原型链的继承
2016/06/22 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
Three.js基础部分学习
2017/01/08 Javascript
浅谈React Native 中组件的生命周期
2017/09/08 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
Vue实现底部侧边工具栏的实例代码
2018/09/03 Javascript
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
2019/08/27 jQuery
python将字典内容存入mysql实例代码
2018/01/18 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
2021/01/29 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
婴儿地球:Baby Earth
2018/12/25 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
租车协议书范本
2014/04/22 职场文书
批评与自我批评总结
2014/10/17 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
电影复兴之路观后感
2015/06/02 职场文书
升学宴祝酒词
2015/08/11 职场文书
2016年度基层党建工作公开承诺书
2016/03/25 职场文书
坚持不是死撑,更重要的是心态
2019/08/19 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书