提高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 相关文章推荐
简化php模板页面中分页代码的解析
Feb 06 PHP
PHP 强制下载文件代码
Oct 24 PHP
PHP大批量数据操作时临时调整内存与执行时间的方法
Apr 20 PHP
ThinkPHP关联模型操作实例分析
Sep 23 PHP
PHP进程同步代码实例
Feb 12 PHP
php获取、检查类名、函数名、方法名的函数方法
Jun 25 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
Jan 03 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 PHP
PHP程序员的技术成长规划
Mar 25 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
Jul 01 PHP
php自定义函数实现二维数组排序功能
Jul 20 PHP
php封装的单文件(图片)上传类完整实例
Oct 18 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
phpcms中的评论样式修改方法
2016/10/21 PHP
10个基于Jquery的幻灯片插件教程
2010/10/29 Javascript
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
JS动态创建Table,Tr,Td并赋值的具体实现
2013/07/05 Javascript
Jquery Uploadify上传带进度条的简单实例
2014/02/12 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
node.js中的path.normalize方法使用说明
2014/12/08 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
jQuery链式操作实例分析
2015/11/16 Javascript
基于JS2Image实现圣诞树代码
2015/12/24 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
2016/05/24 Javascript
vue 挂载路由到头部导航的方法
2017/11/13 Javascript
JS实现标签滚动切换效果
2017/12/25 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
angular8和ngrx8结合使用的步骤介绍
2019/12/01 Javascript
Python版的文曲星猜数字游戏代码
2013/09/02 Python
python uuid模块使用实例
2015/04/08 Python
Python的re模块正则表达式操作
2016/05/25 Python
python win32 简单操作方法
2017/05/25 Python
django开发教程之利用缓存文件进行页面缓存的方法
2017/11/10 Python
代码分析Python地图坐标转换
2018/02/08 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
Python多线程模块Threading用法示例小结
2019/11/09 Python
python3.7+selenium模拟淘宝登录功能的实现
2020/05/26 Python
HTML5 自动聚焦(autofocus)属性使用介绍
2013/08/07 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
无财产离婚协议书范本
2014/10/28 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
党支部鉴定意见
2015/06/02 职场文书
简历自我评价范文
2019/04/24 职场文书
Go语言中的UTF-8实现
2021/04/26 Golang
CSS3中Animation实现简单的手指点击动画的示例
2021/07/15 HTML / CSS
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js