Flex アプリケーションを使用して、PHP 経由でデータベースに 2 つの呼び出しを行っています。2 回目の呼び出しで、プロキシ デバッガーに表示されるエラーが表示されます。これ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(ユーザー);
PHP で次の関数を呼び出します。
public function 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);
}
次に、2 番目の関数には、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;
}
2 番目の関数は完了するまでに少なくとも 1 分かかり、その後上記のエラーが発生しますが、最初の関数はほぼ瞬時に発生します。私はそれが 2 番目の関数だと思いますが、エラーには 40961 バイトを割り当てようとしていることも示されています。これはクォータよりもはるかに小さいため、これを実行している最初の検索である必要があります。私は本当に立ち往生しているので、どんな助けも大歓迎です