提高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简单系统数据添加以及数据删除模块源文件下载
Jun 07 PHP
使用eAccelerator加密PHP程序
Oct 03 PHP
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
Oct 13 PHP
php 仿Comsenz安装效果代码打包提供下载
May 09 PHP
PHP实现显示照片exif信息的方法
Jul 11 PHP
推荐一款MAC OS X 下php集成开发环境mamp
Nov 08 PHP
CI框架数据库查询缓存优化的方法
Nov 21 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
Apr 27 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
浅谈PHP中如何实现Hook机制
Nov 14 PHP
php实现二叉树中和为某一值的路径方法
Oct 14 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
Apr 10 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 Class&Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
javascript 检测浏览器类型和版本的代码
2009/09/15 Javascript
让innerText在firefox火狐和IE浏览器都能用的写法
2011/05/14 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
jQuery实现点击该行即可删除HTML表格行
2014/10/17 Javascript
node.js中的querystring.stringify方法使用说明
2014/12/10 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
2015/09/06 Javascript
JavaScript编写棋盘覆盖代码详解
2017/08/28 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
vue弹窗插件实战代码
2018/09/08 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
js 实现watch监听数据变化的代码
2019/10/13 Javascript
简单了解three.js 着色器材质
2020/08/03 Javascript
typescript配置alias的详细步骤
2020/08/12 Javascript
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
浅谈numpy数组的几种排序方式
2017/12/15 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
python实现栅栏加解密 支持密钥加密
2019/03/20 Python
python调用自定义函数的实例操作
2019/06/26 Python
Django框架模板用法入门教程
2019/11/04 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
编写html5时调试发现脚本php等网页js、css等失效
2013/12/31 HTML / CSS
巧克力蛋糕店创业计划书
2014/01/14 职场文书
简历中的自我评价范文
2014/02/05 职场文书
广告传媒专业应届生求职信
2014/03/01 职场文书
劲霸男装广告词
2014/03/21 职场文书
行政专员岗位职责说明书
2014/09/01 职场文书
爱的奉献演讲稿
2014/09/10 职场文书
优秀党支部申报材料
2014/12/24 职场文书
学生退学证明
2015/06/23 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书
总结会主持词
2015/07/02 职场文书
信息技术远程培训心得体会
2016/01/09 职场文书
使用vue判断当前环境是安卓还是IOS
2022/04/12 Vue.js