提高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写的小东西
Dec 06 PHP
解析zend Framework如何自动加载类
Jun 28 PHP
PHP使用SOAP调用.net的WebService数据
Nov 12 PHP
php函数指定默认值方法的小例子
Dec 04 PHP
PHP中cookie和session的区别实例分析
Aug 28 PHP
php数组中删除元素之重新索引的方法
Sep 16 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
Apr 08 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
Feb 07 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
PDO::errorInfo讲解
Jan 28 PHP
PHP PDOStatement::getAttribute讲解
Feb 01 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实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
探讨如何在PHP开启gzip页面压缩实例
2013/06/09 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
javascript 精粹笔记
2010/05/09 Javascript
IE6中使用position导致页面变形的解决方案(js代码)
2011/01/09 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
2013/04/11 Javascript
高效的获取当前元素是父元素的第几个子元素
2013/10/15 Javascript
js中将String转换为number以便比较
2014/07/08 Javascript
JQuery实现动态表格点击按钮表格增加一行
2014/08/24 Javascript
js实现浏览本地文件并显示扩展名的方法
2015/08/17 Javascript
JavaScript中的this到底是什么(一)
2015/12/09 Javascript
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
简单谈谈js的数据类型
2017/09/25 Javascript
Vue Cli3 创建项目的方法步骤
2018/10/15 Javascript
深入koa-bodyparser原理解析
2019/01/16 Javascript
python合并文本文件示例
2014/02/07 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
python3 简单实现组合设计模式
2020/07/02 Python
python中yield的用法详解
2021/01/13 Python
Python使用pyenv实现多环境管理
2021/02/05 Python
Volcom英国官方商店:美国殿堂级滑板、冲浪、滑雪服装品牌
2019/03/13 全球购物
简述安装Slackware Linux系统的过程
2012/05/08 面试题
问卷调查计划书
2014/01/10 职场文书
农业局学习党的群众路线教育实践活动心得体会
2014/03/07 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
学校四群教育实施方案
2014/06/12 职场文书
六年级语文下册教学计划
2015/01/22 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
卫生主题班会
2015/08/14 职场文书
Golang实现AES对称加密的过程详解
2021/05/20 Golang
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python
使用refresh_token实现无感刷新页面
2022/04/26 Javascript
js前端面试常见浏览器缓存强缓存及协商缓存实例
2022/06/21 Javascript