提高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 相关文章推荐
MySQL GBK→UTF-8编码转换
May 24 PHP
检查url链接是否已经有参数的php代码 添加 ? 或 &
Feb 09 PHP
PHP中英混合字符串截取函数代码
Jul 17 PHP
PHP URL路由类实例
Nov 12 PHP
php中mkdir函数用法实例分析
Nov 15 PHP
PHP实现的线索二叉树及二叉树遍历方法详解
Apr 25 PHP
PHP中的浅复制与深复制的实例详解
Oct 26 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 PHP
PHP join()函数用法与实例讲解
Mar 11 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
Oct 20 PHP
thinkphp5框架路由原理与用法详解
Feb 11 PHP
详解PHP中的8个魔术常量
Jul 06 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之第二天
2006/10/09 PHP
初探PHP5
2006/10/09 PHP
php中explode与split的区别介绍
2012/10/03 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
IE6弹出“已终止操作”的解决办法
2010/11/27 Javascript
js运动框架_包括图片的淡入淡出效果
2013/05/11 Javascript
jquery 3D 标签云示例代码
2014/06/12 Javascript
jQuery 中DOM 操作详解
2015/01/13 Javascript
jQuery元素的隐藏与显示实例
2015/01/20 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
jQuery插件jquery-barcode实现条码打印的方法
2015/11/25 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
jquery.masonry瀑布流效果
2017/05/25 jQuery
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
浅谈如何使用webpack构建多页面应用
2018/05/30 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
删除python pandas.DataFrame 的多重index实例
2018/06/08 Python
Python如何调用外部系统命令
2019/08/07 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
html5 datalist标签使用示例(自动完成组件)
2014/05/04 HTML / CSS
新西兰最大的连锁超市:Countdown
2020/06/04 全球购物
师范生自荐信范文
2013/10/06 职场文书
综艺节目策划方案
2014/06/13 职场文书
小学阳光体育活动总结
2014/07/05 职场文书
党的群众路线教育实践活动调研报告
2014/11/03 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
微信小程序实现聊天室功能
2021/06/14 Javascript