提高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中配置文件现在需要绝密的短语密码的解决方法
Feb 11 PHP
php分页示例代码
Mar 19 PHP
php数组函数序列之array_search()- 按元素值返回键名
Nov 04 PHP
php fsockopen解决办法 php实现多线程
Jan 20 PHP
PHP魔术方法__GET、__SET使用实例
Nov 25 PHP
PHP 正则表达式小结
Feb 12 PHP
PHP中Session可能会引起并发问题
Jun 26 PHP
PHP读取mssql json数据中文乱码的解决办法
Apr 11 PHP
Yii框架创建cronjob定时任务的方法分析
May 23 PHP
PHP反射实际应用示例
Apr 03 PHP
PHP实现通过二维数组键值获取一维键名操作示例
Oct 11 PHP
PHP 对接美团大众点评团购券(门票)的开发步骤
Apr 03 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系统命令函数使用分析
2013/07/05 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
CI框架出现mysql数据库连接资源无法释放的解决方法
2016/05/17 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
让js弹出窗口居前显示的实现方法
2013/07/10 Javascript
jquery封装的对话框简单实现
2013/07/21 Javascript
JavaScript修改css样式style动态改变元素样式
2013/12/16 Javascript
node.js应用后台守护进程管理器Forever安装和使用实例
2014/06/01 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
jquery点击改变class并toggle的实现代码
2016/05/15 Javascript
angularJS Provider、factory、service详解及实例代码
2016/09/21 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
2017/02/24 Javascript
从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析
2017/04/13 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
js仿微信抢红包功能
2020/09/25 Javascript
angular4实现tab栏切换的方法示例
2017/10/21 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
解决angular双向绑定无效果,ng-model不能正常显示的问题
2018/10/02 Javascript
python中文乱码的解决方法
2013/11/04 Python
python实现下载文件的三种方法
2017/02/09 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
Python设计模式之装饰模式实例详解
2019/01/21 Python
python学生管理系统
2019/01/30 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
pandas中ix的使用详细讲解
2020/03/09 Python
Python爬虫获取豆瓣电影并写入excel
2020/07/31 Python
Python timeit模块原理及使用方法
2020/10/10 Python
戴尔加拿大官网:Dell加拿大
2016/09/17 全球购物
公积金转移接收函
2014/01/11 职场文书
工作证明格式及范本
2014/09/12 职场文书
学习优秀共产党员先进事迹思想报告
2014/09/17 职场文书
模范教师材料大全
2014/12/16 职场文书
2016领导干部廉洁自律心得体会
2016/01/13 职场文书
会计做账心得体会
2016/01/22 职场文书
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers