提高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 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
Mar 23 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
Jun 13 PHP
php preg_replace替换实例讲解
Nov 04 PHP
PHP限制页面只能在微信自带浏览器访问的代码
Jan 15 PHP
PHP的password_hash()使用实例
Mar 17 PHP
分享一则PHP定义函数代码
Feb 26 PHP
thinkPHP下的widget扩展用法实例分析
Dec 26 PHP
php 多文件上传的实现实例
Oct 23 PHP
php_pdo 预处理语句详解
Nov 21 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
Mar 19 PHP
php实现微信模板消息推送
Mar 30 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
PHP 作用域解析运算符(::)
2010/07/27 PHP
php实现比较两个字符串日期大小的方法
2015/05/12 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
Thinkphp3.2.3分页使用实例解析
2016/07/28 PHP
PHP数组内存利用率低和弱类型详细解读
2017/08/10 PHP
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
2013/12/13 Javascript
js实现有时间限制消失的图片方法
2015/02/27 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
2015/03/16 Javascript
浅谈JSON.parse()和JSON.stringify()
2015/07/14 Javascript
浅析jquery与checkbox的checked属性的问题
2016/04/27 Javascript
javascript填充默认头像方法
2018/02/22 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
Python3基础之输入和输出实例分析
2014/08/18 Python
python使用htmllib分析网页内容的方法
2015/05/08 Python
浅谈Python的异常处理
2016/06/19 Python
Python基于百度AI的文字识别的示例
2018/04/21 Python
Python数据类型之List列表实例详解
2019/05/08 Python
python代码 FTP备份交换机配置脚本实例解析
2019/08/01 Python
浅谈pytorch grad_fn以及权重梯度不更新的问题
2019/08/20 Python
python opencv调用笔记本摄像头
2019/08/28 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
2019/10/04 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
会计毕业生自荐信
2013/11/21 职场文书
部队万能检讨书
2014/02/20 职场文书
竞选宣传委员演讲稿
2014/05/24 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
啦啦队口号大全
2014/06/16 职场文书
六查六看剖析材料
2014/10/06 职场文书
python基于tkinter制作m3u8视频下载工具
2021/04/24 Python
Dashboard管理Kubernetes集群与API访问配置
2022/04/01 Servers