PHP Cookbook読書ノート–第21章性能向上と負荷テスト
2857 ワード
概要
PHP自体の速度はかなり速くなっていますが、実行速度を向上させるためのツールやテクニックもあります.開発過程で最適化を行う時点はずっと議論されている話題であり、最適化が早すぎて、不要な細部に時間を浪費する可能性がある.最適化が遅すぎると、大きなコードを書き直さなければならないことに気づくかもしれません.
最適化は、実行速度を向上させるだけでなく、プログラミングやトラブルシューティングの時間を節約するために、ほとんどの場合に実行速度を速める必要があります.これらの問題はすべて最適化の際に考慮する必要がある.
この章では、プログラムの実行時間を計算するためのいくつかの方法を紹介し、プログラムの最適化方法を紹介し、Webサイトに対する圧力テストの方法も簡単に紹介します.
実行時間の計算
次の簡単な方法でプログラムの実行時間を計算することができます(微妙です)
PEARのBenchmarkモジュールは、より詳細な時間統計機能を提供します.
declare構造およびticks命令により、各ローのPHPコードの実行時間を自動的に記録することができる
注意:ticks指令はPHP 5.3.0は時代遅れの命令で、PHP 6.0から.0を削除します.
コード配列
主にAdvanced PHP Debugger(APD)について紹介しますが、設定することでトレースファイルを生成でき、ファイルを分析することでスクリプトの詳細が得られます
サイトストレステスト
圧力テストと基準テストを混同することが多い.ベンチマークテストは、独自の開発者によって行われる一時的なアクティビティであり、Apache HTTPテストツールであるabをよく使用しています.このツールは、1台のHTTPサーバが毎秒対応するリクエスト数をテストすることができます.圧力テストはあなたのWEBアプリケーションを中断できるテスト技術で、ブレークポイントテストを通じて、アプリケーションの弱点を識別し、修復することができ、いつ新しいハードウェアを購入するかに根拠を提供します.一般的なオープンソースツールはSiegeです.
スピードアップテクニック
PHPアクセラレータを取り付けることでPHPの実行速度を効率的に提供することができ、一般的な3つのアクセラレータはAlternative PHP Cache(APC)、eAccelerator、ionCube PHP Accelerator(PHPA)である.また、アクセラレータの互換性は、通常、新しくリリースされたPHPバージョンに遅れることに注意してください.
また、スピードアップテクニックは、正則を使わないことができるときはできるだけ使わないでください.通常、代替可能な案は正則を使うよりも効率的です.
PHP自体の速度はかなり速くなっていますが、実行速度を向上させるためのツールやテクニックもあります.開発過程で最適化を行う時点はずっと議論されている話題であり、最適化が早すぎて、不要な細部に時間を浪費する可能性がある.最適化が遅すぎると、大きなコードを書き直さなければならないことに気づくかもしれません.
最適化は、実行速度を向上させるだけでなく、プログラミングやトラブルシューティングの時間を節約するために、ほとんどの場合に実行速度を速める必要があります.これらの問題はすべて最適化の際に考慮する必要がある.
この章では、プログラムの実行時間を計算するためのいくつかの方法を紹介し、プログラムの最適化方法を紹介し、Webサイトに対する圧力テストの方法も簡単に紹介します.
実行時間の計算
次の簡単な方法でプログラムの実行時間を計算することができます(微妙です)
$start_time = microtime(true);
//
//... code here ...
print(' :'.getExecTime($start_time));
function getExecTime($start_time)
{
return microtime(true)-$start_time;
}
PEARのBenchmarkモジュールは、より詳細な時間統計機能を提供します.
require_once 'Benchmark/Timer.php';
$timer =& new Benchmark_Timer(true);
$timer->start();
//
$timer->setMarker('setup');
// some more code executed here
$timer->setMarker('middle');
// even yet still more code here
$timer->setmarker('done');
// and a last bit of code here
$timer->stop();
$timer->display();
declare構造およびticks命令により、各ローのPHPコードの実行時間を自動的に記録することができる
// A function that records the time when it is called
function profile($dump = FALSE)
{
static $profile;
// Return the times stored in profile, then erase it
if ($dump) {
$temp = $profile;
unset($profile);
return ($temp);
}
$profile[] = microtime();
}
// Set up a tick handler
register_tick_function("profile");
// Initialize the function before the declare block
profile();
// Run a block of code, throw a tick every 2nd statement
declare(ticks=2) {
for ($x = 1; $x < 50; ++$x) {
echo similar_text(md5($x), md5($x*$x)), "
;";
}
}
// Display the data stored in the profiler
print_r(profile (TRUE));
注意:ticks指令はPHP 5.3.0は時代遅れの命令で、PHP 6.0から.0を削除します.
コード配列
主にAdvanced PHP Debugger(APD)について紹介しますが、設定することでトレースファイルを生成でき、ファイルを分析することでスクリプトの詳細が得られます
サイトストレステスト
圧力テストと基準テストを混同することが多い.ベンチマークテストは、独自の開発者によって行われる一時的なアクティビティであり、Apache HTTPテストツールであるabをよく使用しています.このツールは、1台のHTTPサーバが毎秒対応するリクエスト数をテストすることができます.圧力テストはあなたのWEBアプリケーションを中断できるテスト技術で、ブレークポイントテストを通じて、アプリケーションの弱点を識別し、修復することができ、いつ新しいハードウェアを購入するかに根拠を提供します.一般的なオープンソースツールはSiegeです.
スピードアップテクニック
PHPアクセラレータを取り付けることでPHPの実行速度を効率的に提供することができ、一般的な3つのアクセラレータはAlternative PHP Cache(APC)、eAccelerator、ionCube PHP Accelerator(PHPA)である.また、アクセラレータの互換性は、通常、新しくリリースされたPHPバージョンに遅れることに注意してください.
また、スピードアップテクニックは、正則を使わないことができるときはできるだけ使わないでください.通常、代替可能な案は正則を使うよりも効率的です.