提高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 采集获取指定网址的内容
Jan 05 PHP
理解和运用PHP中的多态性[译]
Aug 02 PHP
深入Apache与Nginx的优缺点比较详解
Jun 17 PHP
php限制ip地址范围的方法
Mar 31 PHP
php解析字符串里所有URL地址的方法
Apr 03 PHP
PHP实现伪静态方法汇总
Jan 13 PHP
php图片添加水印例子
Jul 20 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
Oct 10 PHP
php基于自定义函数记录log日志方法
Jul 21 PHP
PHP设计模式之适配器模式原理与用法分析
Apr 25 PHP
PHP实现简单的协程任务调度demo示例
Feb 01 PHP
eval(cmd)与eval($cmd)的区别与联系
Jul 07 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命令行脚本接收传入参数的三种方式
2014/08/20 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
jquery设置控件位置的方法
2013/08/21 Javascript
禁止页面刷新让F5快捷键及右键都无效
2014/01/22 Javascript
jquery.form.js用法之清空form的方法
2014/03/07 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
jQuery匹配文档链接并添加class的方法
2015/06/26 Javascript
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
2015/11/03 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
基于jQuery实现定位导航位置效果
2017/11/15 jQuery
Django+vue跨域问题解决的详细步骤
2019/01/20 Javascript
微信小程序实现单选选项卡切换效果
2020/06/19 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
Python的字典和列表的使用中一些需要注意的地方
2015/04/24 Python
Android应用开发中Action bar编写的入门教程
2016/02/26 Python
Python实现多线程HTTP下载器示例
2017/02/11 Python
python处理按钮消息的实例详解
2017/07/11 Python
对pandas中时间窗函数rolling的使用详解
2018/11/28 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
python之生成多层json结构的实现
2020/02/27 Python
澳大利亚在线奢侈品时尚零售平台:Azura Runway
2021/01/13 全球购物
Linux操作面试题
2015/02/11 面试题
酒店经理职责
2014/01/30 职场文书
单方离婚协议书范本2014
2014/10/28 职场文书
客房领班岗位职责
2015/02/11 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
最美劳动诗,致敬所有的劳动者!
2019/07/12 职场文书
浅析CSS在DevTools 中架构演变
2021/10/05 HTML / CSS