ここで競合状態に陥っている可能性があります。
これは基本的に機能します。たとえば、メモリのシャットダウン機能でFATALをトリガーし、以前にシャットダウン機能をトリガーしたタイムアウトでFATALをトリガーします。
register_shutdown_function(function() {
# consume all memory
echo "break my pain\n";
$a = ['hello'];
while($a[] = $a);
});
set_time_limit(1);
while(1) usleep(100);
また、逆に機能し、最初にメモリのFATALをトリガーし、次にシャットダウン機能のタイムアウトのFATALをトリガーします。
register_shutdown_function(function() {
set_time_limit(1);
while(1) usleep(100);
});
ini_set('memory_limit', '1');
$a = array_fill(0, 1024, 'hello');
while($a[] = $a);
これはまだCodeigniter内で何が起こっているのかを100%説明していませんが、クエリに時間がかかりすぎるため、戻った後も実行時間制限がトリガーされます。PHPのバージョンが古いため、これを再現するのはやや困難です。PHPコードを評価すると、コードが評価されたというメッセージが表示され、その行でそのevalコマンド(PHP 5.4)が見つかります。より多くの情報を得るために、PHP5.4で再現してみてください。また、PHP5.2以降に見られた速度の向上からも大きなメリットが得られます。あなたは多くを逃しています。
ついさっき:
致命的なエラー:0行目の不明で最大実行時間が300秒を超えました
これは起動エラーのようなにおいがします。
あなたの最初のエラーを引き起こしたものは言うのが難しいです、あなたはそれを切り落としました。ここに評価済みのコードがあり、APCを介して部分的に処理されている可能性がありますが、同じスクリプトで2つの致命的なエラーが発生する可能性があります。
ただし、再現できる場合は、APCなしで試してください。それでも可能な場合は、PHPバグトラッカーで報告してください。
できない場合は、APCバグトラッカーの問題を報告してください。
編集: PHP 5.2.6を見るだけで、自分で報告して修正する必要があるかもしれません;)-現在の安定したPHPバージョンでも再現してみてください。