PHP開発では、パフォーマンスの最適化とリソース管理が非常に重要なリンクです。ランタイム中にスクリプトがどの程度のメモリを占めるかを理解することで、開発者がタイムリーにメモリリークまたは不合理なメモリ使用量を発見し、それによりターゲットを絞った最適化を実行することができます。 PHPの組み込みメモリ_get_usage関数は、現在のスクリプトメモリ使用量を監視するための強力なツールです。この記事では、この機能の使用について詳しく説明し、実際のアプリケーションシナリオに基づいて使用スキルを習得するのに役立ちます。
Memory_get_usageは、現在のスクリプトで占有されているメモリバイトの数を返すためにPHPによって提供される組み込み関数です。その基本的な構文は次のとおりです。
memory_get_usage(bool $real_usage = false): int
$ real_usageパラメーターはブール値であり、デフォルトでfalseになります。
FALSEの場合、関数はPHPによってスクリプトに適用されたメモリサイズを返します。これは、必ずしもスクリプトに割り当てられた物理メモリを意味するものではありません。
Trueの場合、実際にPHPスクリプトに割り当てられたメモリサイズが返されます。これは、デフォルトの返品値よりも大きい場合があります。
<?php
echo "初期メモリの使用: " . memory_get_usage() . " バイト\n";
$array = range(1, 10000);
echo "配列を作成した後のメモリ使用: " . memory_get_usage() . " バイト\n";
?>
このコードは、最初にスクリプトの初期メモリ使用量を出力し、次に10,000整数の配列を作成し、最後に現在のメモリ使用量を出力します。
大規模なアプリケーションでは、複雑なループを実行するか、大量のデータがロードされます。タイムリーな監視メモリの使用は、メモリの疲労のためにスクリプトがクラッシュするのを防ぐことができます。
<?php
echo "スクリプトのメモリ使用法を開始します: " . memory_get_usage() . " バイト\n";
for ($i = 0; $i < 1000; $i++) {
$data = str_repeat("A", 10000);
if ($i % 100 === 0) {
echo "第 {$i} 2番目のループメモリ使用法: " . memory_get_usage() . " バイト\n";
}
}
echo "スクリプトごとにメモリ使用を終了します: " . memory_get_usage() . " バイト\n";
?>
キーコードセグメントの前後にMemory_Get_Usageを呼び出すことにより、メモリに対するさまざまなライティング方法またはデータ構造の影響を比較することができ、それによりターゲットの最適化を実行できます。
PHPには、同様の関数memory_get_peak_usageもあります。これは、スクリプトの実行中に使用される最大メモリピークを取得するために使用されます。また、 $ real_usageパラメーターも受け入れます。
<?php
echo "メモリピーク値: " . memory_get_peak_usage() . " バイト\n";
?>
両方の使用を組み合わせることにより、開発者はメモリの使用をよりよく理解できます。
<?php
echo "初期メモリ: " . memory_get_usage() . " バイト\n";
$data = [];
for ($i = 0; $i < 10000; $i++) {
$data[] = md5($i);
}
echo "現在のメモリ: " . memory_get_usage() . " バイト\n";
echo "メモリピーク値: " . memory_get_peak_usage() . " バイト\n";
?>
Memory_get_usage()は、現在のスクリプトのメモリ使用量を取得するために使用されます。
それを通して、メモリ消費を監視および分析し、潜在的なパフォーマンスの問題を見つけることができます。
memory_get_peak_usage()を使用すると、最大メモリ消費量のピークを理解できます。
大規模なプロジェクトとリソースに敏感なプロジェクトでは、これら2つの機能の合理的な使用は、パフォーマンスの最適化にとって非常に重要です。
<?php
echo "初期メモリの使用: " . memory_get_usage() . " バイト\n";
$array = range(1, 10000);
echo "配列を作成した後のメモリ使用: " . memory_get_usage() . " バイト\n";
for ($i = 0; $i < 1000; $i++) {
$data = str_repeat("A", 10000);
if ($i % 100 === 0) {
echo "第 {$i} 2番目のループメモリ使用法: " . memory_get_usage() . " バイト\n";
}
}
echo "メモリピーク値: " . memory_get_peak_usage() . " バイト\n";
?>