gpt4 book ai didi

php - fatal error : Out of memory (allocated 12582912) (tried to allocate 12582920 bytes)

转载 作者:行者123 更新时间:2023-11-29 17:25:00 27 4
gpt4 key购买 nike

在 PHP 5 中,我的程序可以运行,但是当我将其更改为 PHP 7 时,表的内容没有显示。这是错误

Fatal error: Out of memory (allocated 12582912) (tried to allocate12582920 bytes) in E:\xampp\htdocs\account\classes\class.user.php online 216

代码错误

for ($i=0; ($row = Sql::fetch_array($resource)) !== FALSE; $i++) {

$users[$i] = new User($row["userId"], $dealerId);
$users[$i]->populate();

这是getAllUsers()

的完整代码
 public static function getAllUsers($dealerId) {

$users = array();


$sql_query = "SELECT userId FROM dealer_users WHERE dealerId='".$dealerId."' ORDER BY username ASC";
$sql_query_1 = "SELECT COUNT(*) FROM dealer_users WHERE dealerId='".$dealerId."'";

self::$lastCount = Sql::fetch_first_row_column($sql_query_1);

$resource = Sql::query($sql_query) or die(mysqli_error($sql_query));

for ($i=0; ($row = Sql::fetch_array($resource)) !== FALSE; $i++) {

$users[$i] = new User($row["userId"], $dealerId);
$users[$i]->populate();
}


Sql::free_result($resource);

return $users;
}

最佳答案

发生此类错误的原因主要有以下三个原因之一:尝试使用大图像、数据集太大或可用内存太少。

您不处理图像,所以这很简单。
对于“正常”编码,它通常不是内存限制,但至少确保它不是。通常为 128MB 或更高,即使稍微低一点,您的代码也不应该消耗那么多。

所以可能是数据量。从那里继续:
事实上,这是溢出点,并不意味着该函数是溢出的原因。可能是“其他函数”将桶装满,而该特定代码段是“最后一滴”。

由于它正在尝试分配比已经分配的空间多 12MB 的空间,因此很可能是循环。除了$users 之外,函数作用域中的大多数变量都很小。您可以使用 class User() 加载它。这是一个大类吗?如果是这样,那就是你的问题了。

// A small improvement might be setting it to a single user first, mutate that small variable, and push the result to the array:  
$newUser = new User($row["userId"], $dealerId);
$newUser->populate();
$users[$i] = $newUser;

如果这还不够,请最小化数据。如果您使用 ID 和用户名创建概述,则不需要整套信息,只需选择相关信息。如果可以的话,将其分成 block ,以便清理内存。

关于php - fatal error : Out of memory (allocated 12582912) (tried to allocate 12582920 bytes),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51019182/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com