効率を最適化するために、PHP で定義する代わりに Hidef を使用するにはどうすればよいですか?この記事では、パフォーマンスを向上させるために PHP で定義する代わりに Hidef 拡張機能を使用する方法を主に紹介し、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、つまりそれぞれ 37 ミリ秒と 0.7 ミリ秒です。したがって、1 日あたり 1,000 万回、ページごとに平均 20 個の定数が使用される場合、740 秒かかります。そして、Hidef を使用すると 14 秒、さらに 700 秒以上かかります。
1 日あたり 1400 秒の PHP 実行時間を節約することは重要ではないかもしれませんが、それは常に良いことであり、試してみる価値はあります。結局のところ、パラメータを変更する可能性は非常に低いのです。
定義パラメータを変更する必要がある場合は、設定ファイルを変更してからphp-fpmをリロードしてください。
オリジナルの設定定数のプログラムサンプルコードを添付します:
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' => 'http://www.jb51.net/', 'WWW_URL' => 'http://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 で定義する代わりに Hidef を使用します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。