ホームページ >バックエンド開発 >PHPチュートリアル >PHP で定義する代わりに Hidef 拡張機能を使用してパフォーマンスを向上させる、Hidefdefine_PHP チュートリアル
Web サイトには、新しい定数を追加する必要があります。私は、ローカルの config.php ファイルを開いて、改善するために数年前にテストした Hidef および APC ソリューションを考えました。パフォーマンスを定義します。
私のプログラムには、開発サーバー、テストサーバー、本番サーバーで異なる構成があり、定数に関しては、配列を使用して定義する必要があるすべての定数を定義し、apc_load_constants 関数があるかどうかを検出します。ない場合は、それを定義します。バッチで。 apc を使用する場合、定数を追加するたびに、$key を変更して有効にする必要があります。
テストサーバーと運用サーバーの PHP が 5.4 にアップグレードされた後、オペコード キャッシュは Zend opcache を使用し、APC はインストールされなくなりました。 apc のユーザーキャッシュを使用するため、apcu を追加インストールしましたが、使い方は apc と全く同じなので、プログラムを変更する必要はまったくありません。ただし、apcu は apc_load_constants と apc_define_constants をサポートしていないため、apc ソリューションは使用できません。私は公式 Web サイトにアクセスし、1 年以上前、2012 年 7 月 12 日に安定版がリリースされた最新バージョンの Hidef 0.1.13 をインストールしました。
定義時間をテストするための簡単なプログラムを作成しました。1000 回実行するのに約 2.8 ミリ秒かかります。したがって、中規模の Web サイト (たとえば、PHP が 1 日に 1,000 万回実行される) の場合、ページごとに 25 個の定数が定義されている場合、1 日あたり約 10000000*25/1000*2.8=700000 ミリ秒、つまり 700 秒かかります。 Hidef を使用すると、1 日あたりの PHP 実行時間を約 700 秒節約できます。
読み取りパフォーマンスを見てみましょう。テストでは定数を 1w 回読み取り、値はすべて 1、つまりそれぞれ 37 ミリ秒と 0.7 ミリ秒です。したがって、1 日あたり 1,000 万回、ページごとに平均 20 個の定数が使用される場合、740 秒かかります。そして、Hidef を使用すると 14 秒、さらに 700 秒以上かかります。
1 日あたり 1,400 秒の PHP 実行時間を節約することは重要ではないかもしれませんが、パラメータを変更する可能性は非常に低いため、常に効果があり、試してみる価値があります。
定義パラメータを変更する必要がある場合は、設定ファイルを変更してから php-fpm をリロードします。
Hidef の具体的なインストール方法については、定義パフォーマンスを向上させるための php 拡張機能 Hidef のインストールと使用方法を参照してください
Baidu で「hidef」を検索すると、3 番目にランク付けされた Web サイトが私のブログ投稿をコピーした Web サイトです:( そして、define のパフォーマンスを向上させるために私が公開した PHP 拡張機能 Hidef のインストールと使用は、最初の Web サイトでは見つかりませんでした明らかに、Baidu はそれに興味がありません。元の識別にはいくつかの逸脱があります。
Baidu で「hidef php」を検索すると、その Web サイトが 1 位、2 位が公式 Web サイト、そして私の Web サイトが 3 位でした。
gg は「hidef php」を検索します。最初の公式 Web サイト、3 番目が別のオリジナルの記事、私のサイトは 4 番目です。 ggの認知度はかなり高いですね!
そこで、この記事が誕生したので、最初の記事とこの記事のランキングに貢献できるかどうか考えてみましょう。
元の構成定数のプログラム サンプル コードを添付します:
コードをコピーします コードは次のとおりです:
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);
}
}
}
'HX' => 1,
'BLOG_URL' => 'http://www.bkjia.com/',
'WWW_URL' => 'http://www.bkjia.com/',
);
速度の定義をテストするためのコードが添付されています。
コードをコピーします コードは次のとおりです:
$constants = array(
'hx1' => 1、
'hx2' => 「2」、
'hx3' => 「3」、
'hx4' => 「4」、
'hx5' => 「5」、
'hx6' => 「6」、
'hx7' => 「7」、
'hx8' => 「8」、
'hx9' => 「9」、
'hx10' => 「10」、
);
関数define_array($key, $arr) {
foreach ($arr as $name => $value) {
定義($name.$i, $value);
}
}
for($i=0;$i
定義配列($i,$constants);
}
$t2 = マイクロタイム(1);
エコー ($t2-$t1)*1000;
//读パフォーマンス
$t1 = マイクロタイム(1);
for($i=0;$i
$t = hx1;
}
$t2 = マイクロタイム(1);
echo ' '.($t2-$t1)*1000;
$t1 = マイクロタイム(1);
for($i=0;$i
$t = HX;
}
$t2 = マイクロタイム(1);
echo ' '.($t2-$t1)*1000;