提高define性能的php扩展hidef的安装和使用

2015-01-24信息快讯网

在apache启动前,PHP启动时创建并初始化了这些常量,这样就不需要在php里define常量了,性能自然没有任何问题了!

官网: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。
nginx+php-fpm配置文件的组织结构介绍
解析百度搜索结果link?url=参数分析 (全)
php中explode与split的区别介绍
PHP explode()函数用法、切分字符串
ThinkPHP3.0略缩图不能保存到子目录的解决方法
ThinkPHP关联模型操作实例分析
Linux下CoreSeek及PHP扩展模块的安装
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
php中inlcude()性能对比详解
PHP优于Node.js的五大理由分享
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
php提示undefined index的几种解决方法
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
PHP Undefined index报错的修复方法
批量获取memcache值并按key的顺序返回的实现代码
php学习笔记 php中面向对象三大特性之一[封装性]的应用
ThinkPHP自动验证失败的解决方法
php自动获取字符串编码函数mb_detect_encoding
允许phpmyadmin空密码登录的配置方法
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
php性能优化分析工具XDebug 大型网站调试工具
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE eval()'d code error
PHP sprintf()函数用例解析
PHP 调试工具Debug Tools
php debug 安装技巧
fleaphp rolesNameField bug解决方法
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
Notice: Undefined index: page in E:\PHP\test.php on line 14
php运行出现Call to undefined function curl_init()的解决方法
php Notice: Undefined index 错误提示解决方法
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
Fatal error: Call to undefined function curl_init()解决方法
©2014-2024 dbsqp.com