提高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
复杂检索数据并分页显示的处理方法
Oct 09 PHP
利用PHP+JS实现搜索自动提示(实例)
Jun 09 PHP
php常用字符串比较函数实例汇总
Nov 24 PHP
PHP获取网页所有连接的方法(附demo源码下载)
Mar 30 PHP
php分页原理 分页代码 分页类制作教程
Sep 23 PHP
ThinkPHP框架分布式数据库连接方法详解
Mar 14 PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 PHP
php实现支持中文的文件下载功能示例
Aug 30 PHP
浅析PHP7的多进程及实例源码
Apr 14 PHP
PHP创建XML接口示例
Jul 04 PHP
PHP变量的作用范围实例讲解
Dec 22 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
Phpbean路由转发的php代码
2008/01/10 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
2014/11/28 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
2020/01/26 PHP
prototype.js的Ajax对象
2006/09/23 Javascript
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
2009/06/04 Javascript
javascrip客户端验证文件大小及文件类型并重置上传
2011/01/12 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
JS中产生标识符方式的演变
2015/06/12 Javascript
谈谈JavaScript中function多重理解
2015/08/28 Javascript
使用CoffeeScrip优美方式编写javascript代码
2015/10/28 Javascript
每天一篇javascript学习小结(RegExp对象)
2015/11/17 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
2015/11/25 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
javascript 作用于作用域链的详解
2017/09/27 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
vue-cli脚手架搭建的项目去除eslint验证的方法
2018/09/29 Javascript
Python中常见的异常总结
2018/02/20 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
在echarts中图例legend和坐标系grid实现左右布局实例
2020/05/16 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
解决tensorflow 释放图,删除变量问题
2020/06/23 Python
python 通过 pybind11 使用Eigen加速代码的步骤
2020/12/07 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
党校培训思想汇报
2013/12/30 职场文书
优秀党支部事迹材料
2014/01/14 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
2015年女工委工作总结
2015/07/27 职场文书
2015年“我们的节日·重阳节”活动总结
2015/07/29 职场文书
少先大队干部竞选稿
2015/11/20 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
Pandas实现DataFrame的简单运算、统计与排序
2022/03/31 Python