我正在使用 Flex 应用程序通过 PHP 对我的数据库进行两次调用。在我的第二次调用中,我收到一个错误,该错误显示在我的代理调试器中,Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 40961 bytes)
这让我非常困惑,因为第一次搜索必须占用大量内存。就在我显示代码之前,我会说我有一个users
只包含 15 行、只有 10 个小列的businesses
表,我有一个包含 19 行和 19 列的表。所以基本上我一开始没有很多数据。
我的第一个函数中有以下 Flex 代码:
用户=新用户();
user.facebookid = facebookidLbl.text;
getUserIDResult.token = userService.getUserByID(user);
在 PHP 中调用以下函数:
公共函数 getUserByID ($item)
{
$getfbid = mysqli_real_escape_string($this->connection, $item->facebookid);
$stmt = mysqli_prepare($this->connection,
"SELECT
users.facebookid,
users.dob,
users.latitude,
users.longitude
FROM users where users.facebookid='{$getfbid}'");
mysqli_stmt_execute($stmt);
$row = new User();
mysqli_stmt_bind_result($stmt, $row->facebookid, $row->dob, $row->latitude, $row->longitude);
if (mysqli_stmt_fetch($stmt)) {
return $row;
} else {
return null;
}
mysqli_stmt_free_result($stmt);
mysqli_close($this->connection);
}
然后第二个函数在 flex 中只有以下行:getBusinessResult.token = businessService.getBusiness(business);
它调用以下 PHP:
公共函数 getBusiness ($item)
{
$result = mysqli_query($this->connection, "SELECT * FROM businesses");
while (($row = mysqli_fetch_array($result, MYSQL_NUM)) !== false)
{
$data[] = $row;
}
第二个功能至少需要一分钟才能完成,然后我得到上面提到的错误,而第一个功能几乎立即发生。我会假设它是第二个函数,但错误还指出它正在尝试分配 40961 字节,这比配额小得多,所以它必须是第一个执行此操作的搜索。我真的被卡住了,所以非常感谢任何帮助