问题是我想在内存问题发生之前发现它们。我有一个从数据库获取行并将返回的关联数组转换为变量的系统,但我永远不知道数据库结果的大小是多少,或者一旦发出数据库请求将占用多少内存。这意味着我的软件可能会因为超出内存而失败。
但我想以某种方式避免这种情况。其中一种方法显然是使数据库请求更小,但如果这是不可能的,或者如果我不知道从数据库返回的数据大小怎么办?是否有可能“捕捉”在 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,因为这是一个 fatal error 。
任何帮助,将不胜感激!
最佳答案
您可以将函数 memory_get_usage 放在循环中,并检查每次循环迭代时是否接近内存限制。
关于php - 你能在它杀死脚本之前捕获超出分配的内存错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12391764/