0

問題は、メモリの問題が発生する前にキャッチしたいということです。データベースから行を取得し、返された連想配列を変数にキャストするシステムを使用していますが、データベースの結果のサイズや、データベース要求が行われた後に必要なメモリの量がわかりません。これは、メモリを超えただけでソフトウェアが失敗する可能性があることを意味します。

でもそれはどうにかして避けたい。方法の 1 つは明らかに小さいデータベース リクエストを作成することですが、これが不可能な場合や、データベースから返されるデータのサイズがわからない場合はどうすればよいでしょうか? PHPでメモリ使用量を超えた状況を「キャッチ」することは可能ですか? このようなもの:

$requestOk=memory_test(function(){
    return doSomething();
});
if($requestOk){
    // Memory seems fine
    // $requestOk now has the value from memory_test() function
} else {
    // Function would have exceeded memory
}

メモリの問題が原因で、スクリプトがいつでも停止する可能性があるのは問題だと思います。私の知る限り、try-catch は致命的なエラーであるため、ここでは使用できません。

どんな助けでも大歓迎です!

4

1 に答える 1

0

関数 memory_get_usage をループ内に配置して、ループが繰り返されるたびにメモリ制限に近づいているかどうかを確認できます。

于 2012-09-19T01:26:12.727 に答える