提高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 相关文章推荐
写一个用户在线显示的程序
Oct 09 PHP
PHP的ASP防火墙
Oct 09 PHP
有关php运算符的知识大全
Nov 03 PHP
PHP判断远程图片或文件是否存在的实现代码
Feb 20 PHP
对PHP语言认识上需要避免的10大误区
Jun 12 PHP
PHP中数据库单例模式的实现代码分享
Aug 21 PHP
PHP上传文件时自动分配路径的方法
Jan 09 PHP
php实现数组中索引关联数据转换成json对象的方法
Jul 08 PHP
详解PHP+AJAX无刷新分页实现方法
Nov 03 PHP
PHP的邮件群发系统phplist配置方法详细总结
Mar 30 PHP
利用PHP判断是否是连乘数字串的方法示例
Jul 03 PHP
基于PHP的登录和注册的功能的实现
Aug 06 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笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
PHP使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
2015/09/30 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
2016/03/07 PHP
php查询及多条件查询
2017/02/26 PHP
POST一个JSON格式的数据给Restful服务实例详解
2017/04/07 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
Use Word to Search for Files
2007/06/15 Javascript
JavaScript 创建对象
2009/07/17 Javascript
通过正则表达式实现表单验证是否为中文
2014/02/18 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
node.js超时timeout详解
2014/11/26 Javascript
js实现圆盘记速表
2015/08/03 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
2015/12/03 Javascript
基于原生JS实现图片裁剪
2016/08/01 Javascript
炫酷的js手风琴效果
2016/10/13 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
从零开始搭建一个react项目开发
2018/02/09 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
2019/06/24 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
jQuery实现B2B网站后台管理系统侧导航
2020/07/08 jQuery
详解js中的几种常用设计模式
2020/07/16 Javascript
解决vue请求接口第一次成功,第二次失败问题
2020/09/08 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
基于python连接oracle导并出数据文件
2020/04/28 Python
Python数据相关系数矩阵和热力图轻松实现教程
2020/06/16 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
python3判断IP地址的方法
2021/03/04 Python
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
会计岗位职责
2013/11/08 职场文书
银行门卫岗位职责
2013/12/29 职场文书
cf收人广告词
2014/03/14 职场文书
2014年反腐倡廉工作总结
2014/12/05 职场文书
团代会闭幕词
2015/01/28 职场文书
恋恋笔记本观后感
2015/06/16 职场文书