提高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 获取本机外网/公网IP的代码
May 09 PHP
php重定向的三种方法分享
Feb 22 PHP
关于UEditor编辑器远程图片上传失败的解决办法
Aug 31 PHP
初步介绍PHP扩展开发经验分享
Sep 06 PHP
浅析memcache启动以及telnet命令详解
Jun 28 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
Apr 17 PHP
PHP生成唯一订单号的方法汇总
Apr 16 PHP
php编写的抽奖程序中奖概率算法
May 14 PHP
php实现仿写CodeIgniter的购物车类
Jul 29 PHP
PHP中常见的缓存技术实例分析
Sep 23 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
Feb 25 PHP
PHP巧妙利用位运算实现网站权限管理的方法
Mar 12 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 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
2014/04/24 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
2014/10/14 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
动态控制Table的js代码
2007/03/07 Javascript
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
浅谈Unicode与JavaScript的发展史
2015/01/19 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
nodejs的压缩文件模块archiver用法示例
2017/01/18 NodeJs
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
js实现上传并压缩图片效果
2018/01/10 Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
2018/11/13 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
vue3.0 上手体验
2020/09/21 Javascript
python中二维阵列的变换实例
2014/10/09 Python
python简单判断序列是否为空的方法
2015/06/30 Python
用python写的一个wordpress的采集程序
2016/02/27 Python
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
在matplotlib的图中设置中文标签的方法
2018/12/13 Python
django的ORM操作 删除和编辑实现详解
2019/07/24 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
带你学习Python如何实现回归树模型
2020/07/16 Python
使用Python封装excel操作指南
2021/01/29 Python
墨西哥网上超市:Superama
2018/07/10 全球购物
十八届三中全会感言
2014/03/10 职场文书
2015届本科毕业生自我鉴定
2014/09/27 职场文书
房屋过户委托书范本
2014/10/07 职场文书
大学生操行评语大全
2014/12/31 职场文书
质量保证书格式模板
2015/02/27 职场文书
辞职信格式模板
2015/02/27 职场文书
2015年工会工作总结范文
2015/07/23 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
oracle重置序列从0开始递增1
2022/02/28 Oracle