PHP中使用hidef扩展代替define提高性能
发布:smiling 来源: PHP粉丝网 添加日期:2021-05-22 14:33:28 浏览: 评论:0
这篇文章主要介绍了PHP中使用hidef扩展代替define提高性能,本文着重测试hidef的性能,同时介绍了安装方法和使用示例,需要的朋友可以参考下
网站需要新加一个常量,打开了本地的config.php文件,想到了几年前测试过的hidef以及apc提升define性能的方案。
我的程序中有对开发、测试、生产服务器分别做了不同的配置,在常量方面则使用了一个数组定义了所有需要定义的常量,然后检测是否有apc_load_constants函数,没有的话,批量define。使用apc时,每增加一个常量,还需要修改一下$key才能生效。
而现在测试、生产服务器php都升级到5.4后,opcode缓存就使用了Zend opcache,不再安装APC。因为有用到apc user cache,因此额外装了apcu,和apc用法一模样,完全不用改程序。而apcu不支持apc_load_constants和apc_define_constants,因此apc这个方案就无法用了。去官网装了最新版hidef 0.1.13,2012-7-12发布的stable,一年多了。
写了个简单程序测试define化的时间,大概运行1000次需要2.8ms。那么对于一个中型网站(例如一天php运行1000w次)来说,如果每页定义25个常量,大概每天需要化 10000000*25/1000*2.8=700000ms,就是700秒。差不多使用hidef可以一天节省700s的PHP运行时间。
再看看读的性能好了,测试读1w次一个常量,值都是1,分别是37ms和0.7ms。那么如果一天1000w次,每页平均使用20个常量,则需要740秒,而使用hidef是14秒,好吧,又一个700多秒。
一天省1400秒php运行时间,也许是还是微不足道,但总是好的,也是值的尝试的,毕竟define的参数变化的机率非常少。
当define参数需要修改时,修改配置文件,然后重载下php-fpm,就好了。
在百度里搜索“hidef”,排第3位的是一个copy我博文的网站:( 而我自己发布的提高define性能的php扩展hidef的安装和使用在前三页没有找到。显然是百度对原创的识别出了些偏差。
百度搜索“hidef php”,那个网址排第一,第二是官网,我的在第三。
gg搜索“hidef php”,第一官网,第3是另一篇原创,我的在第四。gg的识别就不错!
360搜索"hidef php",第一那个copy站,第二我的,第三另一篇原创。
因此有了这篇的诞生,看看能不能帮第一篇排上去或者这篇排上去也行。
附原配置常量的程序示例代码:
- if (function_exists('apc_load_constants')) {
- function define_array($key, $arr, $case_sensitive = false) {
- if (!apc_load_constants($key, $case_sensitive)) {
- apc_define_constants($key, $arr, $case_sensitive);
- }
- }
- } else {
- function define_array($key, $arr, $case_sensitive = false) {
- foreach ($arr as $name => $value) {
- define($name, $value, $case_sensitive);
- }
- }
- }
- $constants = array(
- 'HX' => 1,
- 'BLOG_URL' => 'https://www.phpfensi.com/',
- 'WWW_URL' => 'https://www.phpfensi.com/',
- );
- define_array('hx_defined',$constants);
附测试define速度的代码,代码如下:
- <?php
- $t1 = microtime(1);
- $constants = array(
- 'hx1' => 1,
- 'hx2' => '2',
- 'hx3' => '3',
- 'hx4' => '4',
- 'hx5' => '5',
- 'hx6' => '6',
- 'hx7' => '7',
- 'hx8' => '8',
- 'hx9' => '9',
- 'hx10' => '10',
- );
- function define_array($key, $arr) {
- foreach ($arr as $name => $value) {
- define($name.$i, $value);
- }
- }
- for($i=0;$i<100;$i++) {
- define_array($i,$constants);
- }
- $t2 = microtime(1);
- echo ($t2-$t1)*1000;
- //读性能
- $t1 = microtime(1);
- for($i=0;$i<10000;$i++) {
- $t = hx1;
- }
- $t2 = microtime(1);
- echo ' '.($t2-$t1)*1000;
- $t1 = microtime(1);
- for($i=0;$i<10000;$i++) {
- $t = HX;
- }
- $t2 = microtime(1);
- echo ' '.($t2-$t1)*1000;
Tags: hidef define
- 上一篇:PHP JSON格式的中文显示问题解决方法
- 下一篇:PHP四种基本排序算法示例
相关文章
- ·Call to undefined function php() (2013-11-28)
- ·Fatal error: Call to undefined function curl_init(2013-11-28)
- ·php Undefined variable和 Undefined index(2013-11-28)
- ·php define常量定义与变量区别(2013-11-29)
- ·php Undefined index和Undefined variable的解决方法(2013-11-29)
- ·php Notice : Use of undefined constant解决办法(2013-11-30)
- ·Notice:undefined index ..错误提示解决方法(2013-12-02)
- ·PHP Notice: undefined index原因与解决办法(2013-12-03)
- ·php提示 Notice: Use of undefined constant name - assumed(2013-12-04)
- ·php提示Notice: Undefined index 错误解决办法(2014-03-10)
- ·php判断变量常量是否存在(2014-03-11)
- ·php提示undefined index解决方法(2014-03-22)
- ·php 定义常量define()与普通变量(2014-05-26)
- ·PHP使用动态Constant与Define值(2014-07-10)
- ·undefined function mysql_connect(2014-09-11)
- ·php Call to undefined function mssql_connect()(2014-09-12)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)