ホームページ >バックエンド開発 >PHPチュートリアル >PHP テストの Hidef パフォーマンス
この記事では、パフォーマンスを向上させるために PHP で定義する代わりに Hidef 拡張機能を使用する方法を主に紹介します。また、インストール方法と使用例も紹介します。
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 (それぞれ 37ms と 0.7ms) です。つまり、1 日に 1,000 万回使用され、ページごとに平均 20 個の定数が使用される場合、740 秒かかりますが、Hidef を使用すると 14 秒、さらに 700 秒以上かかります。
1 日あたり 1400 秒の PHP 実行時間を節約するのは重要ではないかもしれませんが、パラメータを変更する可能性は非常に低いので、常に効果があり、試してみる価値があります。
定義パラメータを変更する必要がある場合は、設定ファイルを変更してから php-fpm を再読み込みしてください。
Hidef の具体的なインストール方法については、定義パフォーマンスを向上させる PHP 拡張機能 Hidef のインストールと使い方を参照してください。
Baidu で「hidef」と検索し、3 番目を参照してください。 place は私のブログ投稿のコピーです Website:( そして、define のパフォーマンスを向上させるために私が公開した PHP 拡張機能である Hidef のインストールと使用は、最初の 3 ページには見つかりませんでした。どうやら、Baidu ではオリジナルの識別にいくつかの逸脱があるようです。
Baidu で「hidef php」を検索すると、その Web サイトが 1 位にランクされ、2 番目が公式 Web サイトで、私の 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); } } } $constants = array( 'HX' => 1, 'BLOG_URL' => '//www.jb51.net/', 'WWW_URL' => '//www.jb51.net/', ); define_array('hx_defined',$constants);
コードは次のとおりです。
<?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;
関連する推奨事項:
ファイルの読み取り、編集、保存のための php 操作
HTML5 WebSocket 通信と組み合わせた php の使用方法
以上がPHP テストの Hidef パフォーマンスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。