PHP中使用hidef擴充套件代替define提高效能

2022-10-06 06:06:10 字數 2247 閱讀 5482

**需要新加乙個常量,開啟了本地的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次)來說,如果每頁定ulysc義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具體安裝方法參見:提高define效能的php擴充套件hidef的安裝和使用

在百度裡搜尋「hidef」,排第3位的是乙個copy我博文的**:( 而我自己發布的提高define效能的php擴充套件hidef的安裝和使用在前三頁沒有找到。顯然是百度對原創的識別出了些偏差。

百度搜尋「hidef php」,那個**排第一,第二是官網,我的在第三。

gg搜尋「hidef php」,第一官網,第3是另一篇原創,我的在第四。gg的識別就不錯!

360搜尋"hidef php",第一那個copy站,第二我的,第三另一篇原創。

因此有了這篇的誕生,看看能不能幫第一篇排上去或者這篇排上去也行。

附原配置常量的程式示例**:

複製** **如下:

if (function_exists('apc_load_constants'))

}} else }}

$constants = array(

'hx'   => 1,

'blog_url'   => '',

'www_url'   => '',

);define_array('hx_defined',$constants);

附測試define速度的**。

複製** **如下:

<?php

$t1 = microtime(1);

$constants = array(

'hx1'       => 1,

'hx2'   &nulyscbsp;   => '2',

'hx3'       => '3',

'hx4'       => '4',

'hx5'       => '5',

'hx6'       => '6',

'hx7'       => '7',

'hx8'       => '8',

'hx9'       => '9',

'hx10'     &nbsulyscp; => '10',

);function define_array($key, $arr)

}for($i=0;$i<100;$i++)

$t2 = microtime(1);

echo ($t2-$t1)*1000;

//讀效能

$t1 = microtime(1);

for($i=0;$i<10000;$i++)    

$t2 = microtime(1);

echo ' '.($t2-$t1)*1000;

$t1 = microtime(1);

for($i=0;$i<10000;$i++)    

$t2 = microtime(1);

echo ' '.($t2-$t1)*1000;

本文標題: php中使用hidef擴充套件代替define提高效能

本文位址:

在php中使用函式代替require操作

在 php 中,為了減少重複 常常需要包含 heade 和 footer,我們最長使用的操作就是,require 或者 reqire once等 但是我們可以用另一種方式來實現這種包含,寫乙個函式,比如 printheader 如下所示,看起來似乎一行 變成兩行更麻煩了,但是卻可以實現一些額外的效果...

在PHP中使用UUID擴充套件的函式

環境 centos linux release 7.7.1908 core php 7.3.11 uuid extention 1.0.4 感覺上php對uuid的支援似乎不是很上心,pecl中的uuid擴充套件僅僅是對libuuid的打包,並沒有像其他語言那樣直接提供完整的uuid實現。由於lib...

php中使用mysql介紹 PHP中使用MySQL

mysql資料庫的擴充套件 擴充套件庫基本功能相似,用法基本相同,會增加一些新的特性 mysqli擴充套件庫 只能對mysql資料庫操作 pdo擴充套件 可以操作很多態別的資料庫 wamp下修改mysql資料庫密碼 三者在建立連線上的比較 pdo需要四個引數,除了資料庫管理員名稱 密碼 host 還...