レンタルサーバーで PHP のメモリ割り当て量と使用状況を調べるコードを AI に書いてもらいました(笑
以下のコードを「memory_check.php」というファイル名でお使いのレンタルサーバーにアップし、ファイルにアクセスしてください。
↓ここから
\u0026lt;?php
// 文字コードを明示(日本語環境でも文字化けしないように)
header('Content-Type: text/html; charset=UTF-8');
?\u0026gt;
\u0026lt;!DOCTYPE html\u0026gt;
\u0026lt;html lang=\u0026quot;ja\u0026quot;\u0026gt;
\u0026lt;head\u0026gt;
\u0026lt;meta charset=\u0026quot;UTF-8\u0026quot;\u0026gt;
\u0026lt;title\u0026gt;PHP メモリ制限・使用量チェック\u0026lt;/title\u0026gt;
\u0026lt;style\u0026gt;
body { font-family: Meiryo, sans-serif; margin: 40px; background:#f5f5f5; }
pre { background:#fff; padding:20px; border:1px solid #ddd; border-radius:8px; }
.ok { color:green; font-weight:bold; }
.warn { color:orange; font-weight:bold; }
.error { color:red; font-weight:bold; }
\u0026lt;/style\u0026gt;
\u0026lt;/head\u0026gt;
\u0026lt;body\u0026gt;
\u0026lt;h1\u0026gt;PHP メモリ情報\u0026lt;/h1\u0026gt;
\u0026lt;pre\u0026gt;
\u0026lt;?php
// 1. php.ini の memory_limit(このプロセスに割り当てられる最大メモリ)
$memory_limit = ini_get('memory_limit');
echo \u0026quot;■ memory_limit(最大許容メモリ): \u0026lt;strong\u0026gt;$memory_limit\u0026lt;/strong\u0026gt;\
\u0026quot;;
// バイト単位に変換する関数
function to_bytes($val) {
$val = trim($val);
$last = strtolower($val[strlen($val)-1]);
$val = (int)$val;
switch($last) {
case 'g': $val *= 1024;
case 'm': $val *= 1024;
case 'k': $val *= 1024;
}
return $val;
}
$limit_bytes = to_bytes($memory_limit);
$limit_mb = $limit_bytes / 1024 / 1024;
echo \u0026quot; → バイト単位: \u0026quot; . number_format($limit_bytes) . \u0026quot; bytes (\u0026quot;
. round($limit_mb, 2) . \u0026quot; MB)\
\
\u0026quot;;
// 2. 現在このスクリプトが使用しているメモリ量
$current_usage = memory_get_usage(true); // 実際の割り当て済みメモリ(リアルユース)
$current_usage_real = memory_get_usage(false); // PHP内部で確保しているメモリ
echo \u0026quot;■ 現在のメモリ使用量\
\u0026quot;;
echo \u0026quot; memory_get_usage() : \u0026quot; . number_format($current_usage) . \u0026quot; bytes (\u0026quot;
. round($current_usage / 1024 / 1024, 3) . \u0026quot; MB)\
\u0026quot;;
echo \u0026quot; memory_get_usage(true) : \u0026quot; . number_format($current_usage_real) . \u0026quot; bytes (\u0026quot;
. round($current_usage_real / 1024 / 1024, 3) . \u0026quot; MB)\
\
\u0026quot;;
// 3. ピーク時の使用量(スクリプト実行中に一番多く使った量)
$peak = memory_get_peak_usage(true);
$peak_real = memory_get_peak_usage(false);
echo \u0026quot;■ ピーク時のメモリ使用量(これまでに一番多く使った量)\
\u0026quot;;
echo \u0026quot; memory_get_peak_usage() : \u0026quot; . number_format($peak) . \u0026quot; bytes (\u0026quot;
. round($peak / 1024 / 1024, 3) . \u0026quot; MB)\
\u0026quot;;
echo \u0026quot; memory_get_peak_usage(true) : \u0026quot; . number_format($peak_real) . \u0026quot; bytes (\u0026quot;
. round($peak_real / 1024 / 1024, 3) . \u0026quot; MB)\
\
\u0026quot;;
// 4. 使用率(%)
if ($limit_bytes \u0026gt; 0) {
$usage_percent = ($peak / $limit_bytes) * 100;
echo \u0026quot;■ ピーク使用率: \u0026quot; . round($usage_percent, 2) . \u0026quot;% \u0026quot;;
if ($usage_percent \u0026gt;= 90) {
echo \u0026quot;\u0026lt;span class='error'\u0026gt;(ほぼ上限!注意)\u0026lt;/span\u0026gt;\u0026quot;;
} elseif ($usage_percent \u0026gt;= 70) {
echo \u0026quot;\u0026lt;span class='warn'\u0026gt;(やや高め)\u0026lt;/span\u0026gt;\u0026quot;;
} else {
echo \u0026quot;\u0026lt;span class='ok'\u0026gt;(余裕あり)\u0026lt;/span\u0026gt;\u0026quot;;
}
echo \u0026quot;\
\u0026quot;;
}
// 5. サーバーの物理メモリ(参考情報)
if (function_exists('sys_getloadavg')) {
echo \u0026quot;\
■ サーバーの負荷平均(1/5/15分): \u0026quot; . implode(' / ', sys_getloadavg()) . \u0026quot;\
\u0026quot;;
}
?\u0026gt;
\u0026lt;/pre\u0026gt;
\u0026lt;p\u0026gt;このファイルを \u0026lt;code\u0026gt;memory_check.php\u0026lt;/code\u0026gt; などとしてアップロードし、ブラウザでアクセスするだけで現在のPHPメモリ状況が確認できます。\u0026lt;/p\u0026gt;
\u0026lt;h3\u0026gt;さらに詳しく調べたい場合の追加コード\u0026lt;/h3\u0026gt;
\u0026lt;pre\u0026gt;
// phpinfo() の一部だけ表示(メモリ関連)
phpinfo(INFO_GENERAL | INFO_CONFIGURATION | INFO_ENVIRONMENT);
\u0026lt;/pre\u0026gt;
\u0026lt;p\u0026gt;(注意:本番環境では phpinfo() は情報漏洩になるので、確認が終わったら削除してください)\u0026lt;/p\u0026gt;
\u0026lt;/body\u0026gt;
\u0026lt;/html\u0026gt;
↑ここまで
動作チェック済です。
レンタルサーバーによっては、php.ini を編集して PHP のメモリ割り当てを変更することが出来ますのでお試しを。