在php5我的程序中它的工作,当我变成php7时,表的内容没有显示。这是错误
致命错误:内存不足(已分配12582912)(尝试分配 12582920字节)在E:\ xampp \ htdocs \ account \ classes \ class.user.php中 第216行
代码错误
for ($i=0; ($row = Sql::fetch_array($resource)) !== FALSE; $i++) {
$users[$i] = new User($row["userId"], $dealerId);
$users[$i]->populate();
这是公共静态公共静态函数getAllUsers($ dealerId)的完整代码
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;
}
答案 0 :(得分:0)
这种类型的错误主要是由于以下三个原因之一引起的:尝试使用大图像,数据集太大或可用内存太少的时髦东西。
您不使用图像,这很容易。
对于“普通”编码,通常不是memory_limit,但至少要确保它不是。它通常为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和用户名创建概览,则不需要整个设置,只需选择相关信息即可。如果可以的话,请将其分成几块,以便清除内存。