0

问题是我想在内存问题发生之前发现它们。我有一个从数据库获取行并将返回的关联数组转换为变量的系统,但我永远不知道数据库结果的大小是多少,或者一旦发出数据库请求将占用多少内存。这意味着我的软件可能会因为超出内存而失败。

但我想以某种方式避免这种情况。其中一种方法显然是使数据库请求更小,但如果这是不可能的,或者如果我不知道从数据库返回的数据大小怎么办?是否有可能“捕捉”在 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 回答