1

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 バイトを割り当てようとしていることも示されています。これはクォータよりもはるかに小さいため、これを実行している最初の検索である必要があります。私は本当に立ち往生しているので、どんな助けも大歓迎です

4

1 に答える 1

0
Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 40961 bytes)

このエラーは、40961バイトの割り当てに失敗したことを意味するのではなく、追加の 40961 バイトを割り当てようとしたときにクォータを超えたことを意味します。あなたのコードを見る:

while (($row = mysqli_fetch_array($result, MYSQL_NUM)) !== false) 
{
$data[] = $row;
}

各行を配列に保存しています。非常に大きなテーブルがあると仮定すると、割り当てはそのような大きな配列を保存できません。

于 2012-05-22T14:51:54.263 に答える