提高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 相关文章推荐
Smarty结合Ajax实现无刷新留言本实例
Jan 02 PHP
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
Jun 30 PHP
Yii中render和renderPartial的区别
Sep 03 PHP
PHP获取当前相对于域名目录的方法
Jun 26 PHP
php中define用法实例
Jul 30 PHP
thinkPHP多语言切换设置方法详解
Nov 11 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
May 09 PHP
php文件上传类的分享
Jul 06 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
Feb 15 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
Mar 29 PHP
Laravel 读取 config 下的数据方法
Oct 13 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
Oct 16 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
PHP4实际应用经验篇(4)
2006/10/09 PHP
一个数据采集类
2007/02/14 PHP
php下封装较好的数字分页方法
2010/11/23 PHP
请离开include_once和require_once
2013/07/18 PHP
PHP URL参数获取方式的四种例子
2014/02/28 PHP
php常用文件操作函数汇总
2014/11/22 PHP
php二维码生成
2015/10/19 PHP
PHP中Restful api 错误提示返回值实现思路
2016/04/12 PHP
利用php_imagick实现复古效果的方法
2016/10/18 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
php面试实现反射注入的详细方法
2019/09/30 PHP
js每次Title显示不同的名言
2008/09/25 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
javascript中一些util方法汇总
2015/06/10 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
详解js的异步编程技术的方法
2017/02/09 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
[17:00]DOTA2 HEROS教学视频教你分分钟做大人-帕克
2014/06/10 DOTA
Python字典操作详细介绍及字典内建方法分享
2018/01/04 Python
Python中循环后使用list.append()数据被覆盖问题的解决
2018/07/01 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
python遍历文件目录、批量处理同类文件
2019/08/31 Python
python pillow库的基础使用教程
2021/01/13 Python
CSS3中的display:grid,网格布局介绍
2019/10/30 HTML / CSS
小学生获奖感言范文
2014/02/02 职场文书
教师党员公开承诺书
2014/03/25 职场文书
家长学校教学计划
2015/01/19 职场文书
担保书格式
2015/01/20 职场文书
英雄儿女观后感
2015/06/09 职场文书
团组织关系介绍信
2019/06/24 职场文书
left join、inner join、right join的区别
2021/04/05 MySQL
Python机器学习之PCA降维算法详解
2021/05/19 Python
Python日志模块logging用法
2022/06/05 Python