提高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小技巧搜集,每个PHPer都来露一手
Jan 02 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
Mar 31 PHP
PHP缓存机制Output Control详解
Jul 14 PHP
PHPUnit安装及使用示例
Oct 29 PHP
php采用curl实现伪造IP来源的方法
Nov 21 PHP
给ECShop添加最新评论
Jan 07 PHP
php使用指定编码导出mysql数据到csv文件的方法
Mar 31 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
Mar 10 PHP
PHP中文字符串截断无乱码解决方法
Oct 10 PHP
php简单实现文件或图片强制下载的方法
Dec 06 PHP
PHP错误处理函数register_shutdown_function使用示例
Jul 03 PHP
PHP回调函数概念与用法实例分析
Nov 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
global.php
2006/12/09 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
2013/06/03 PHP
php远程下载类分享
2016/04/13 PHP
javascript 命名规则 变量命名规则
2010/02/25 Javascript
jquery 模拟雅虎首页的点击对话框效果
2010/04/11 Javascript
原生javascript兼容性测试实例
2013/07/01 Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
2013/12/18 Javascript
jquery对象和javascript对象即DOM对象相互转换
2014/08/07 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
2015/03/26 Javascript
实现无刷新联动例子汇总
2015/05/20 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
2016/03/09 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
JavaScript 中使用 Generator的方法
2017/12/29 Javascript
JavaScript实现区块链
2018/03/14 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
[50:15]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
[04:05]TI9战队采访 - Natus Vincere
2019/08/22 DOTA
Python实现大文件排序的方法
2015/07/10 Python
Python中矩阵创建和矩阵运算方法
2018/08/04 Python
linux安装python修改默认python版本方法
2019/03/31 Python
python2.7使用plotly绘制本地散点图和折线图
2019/04/02 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
jupyter 导入csv文件方式
2020/04/21 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
2021/02/26 Python
国际化的太阳镜及太阳镜配件零售商:Sunglass Hut
2016/07/26 全球购物
玩具反斗城葡萄牙官方商城:Toys"R"Us葡萄牙
2016/10/21 全球购物
澳大利亚排名第一的在线酒类商店:MyBottleShop
2018/04/26 全球购物
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
大学生职业规划前言模板
2013/12/27 职场文书
分公司经理任命书
2014/06/05 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
python基础入门之普通操作与函数(三)
2021/06/13 Python