エラーを再現できた唯一の方法は、値をに格納し、その長さを毎回$_SESSION
2倍にすることです。これが私のコードです:
<?php
session_start();
if (!isset($_SESSION['test'])) {
$_SESSION['test'] = 'abcdefghij';
}
else {
$_SESSION['test'] .= $_SESSION['test'];
}
$_SESSION['memory'][] = memory_get_usage();
print_r($_SESSION['memory']);
exit;
ページを24回更新した後、ようやくメモリが不足しました。
Array
(
[0] => 231768
[1] => 232088
[2] => 232248
[3] => 232424
[4] => 232640
[5] => 232728
[6] => 233200
[7] => 233984
[8] => 235376
[9] => 238136
[10] => 243392
[11] => 253768
[12] => 274384
[13] => 315480
[14] => 397536
[15] => 561512
[16] => 889328
[17] => 1544952
[18] => 2855808
[19] => 5477384
[20] => 10720400
[21] => 21206296
[22] => 42177952
[23] => 84121128
)
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 83886344 bytes) in Unknown on line 0
ページが更新されるたびにメモリ使用量が増加することがわかります。
PHPに指示するとexit
、コード内でそれ以上何も実行されません。私の推測では、あなたがした後のどこかでexit
、あなたも次のようなことをします:
$_SESSION['test'] = 'something else';
ページをexit
作成すると、これは実行されないため、指数関数的に増加するループにスローされ、毎回メモリ使用量が増加します。このようなものが見つからない場合は、Xdebugを調べて、何が起こっているのかをよりよく把握することをお勧めします。