提高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 相关文章推荐
PHP4之真OO
Oct 09 PHP
论坛头像随机变换代码
Oct 09 PHP
MYSQL环境变量设置方法
Jan 15 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
Nov 01 PHP
30 个很棒的PHP开源CMS内容管理系统小结
Oct 14 PHP
php简单浏览目录内容的实现代码
Jun 07 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
Mar 26 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
May 12 PHP
PHP引用的调用方法分析
Apr 25 PHP
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
Jul 10 PHP
PHP实现的策略模式简单示例
Aug 25 PHP
PHP实现Redis单据锁以及防止并发重复写入
Apr 10 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 文件上传功能实现代码
2009/06/24 PHP
yii框架通过控制台命令创建定时任务示例
2014/04/30 PHP
php实现斐波那契数列的简单写法
2014/07/19 PHP
php+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
PHP copy函数使用案例代码解析
2020/09/01 PHP
判断页面是关闭还是刷新的js代码
2007/01/28 Javascript
javascript实现数字验证码的简单实例
2014/02/10 Javascript
jquery 3D 标签云示例代码
2014/06/12 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
2015/09/05 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
webpack实用小功能介绍
2018/01/02 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
2018/02/28 Javascript
在JavaScript中实现链式调用的实现
2019/12/24 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
2020/06/25 Javascript
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
python求素数示例分享
2014/02/16 Python
Windows系统下安装Python的SSH模块教程
2015/02/05 Python
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
Python 常用的安装Module方式汇总
2017/05/06 Python
浅谈Python traceback的优雅处理
2018/08/31 Python
python中将zip压缩包转为gz.tar的方法
2018/10/18 Python
Python创建临时文件和文件夹
2020/08/05 Python
python 中 .py文件 转 .pyd文件的操作
2021/03/04 Python
Currentbody西班牙:美容仪专家
2019/09/28 全球购物
工业自动化专业自荐信范文
2014/04/10 职场文书
安全生产责任书范本
2014/04/15 职场文书
2014年居委会工作总结
2014/12/09 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
Web前端:CSS最强总结 附详细代码
2021/03/31 HTML / CSS
Python中递归以及递归遍历目录详解
2021/10/24 Python
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA
vue判断按钮是否可以点击
2022/04/09 Vue.js