【问题标题】:Memory Error in PHP Using SQL Query使用 SQL 查询的 PHP 内存错误
【发布时间】:2014-02-05 16:00:30
【问题描述】:

我有一个 PHP 页面,它有一个搜索框,可以从一个相当大的数据库中搜索媒体。我已经做到了,如果您只输入前 3 个字符(例如 V75),则会显示所有 V75 磁带(V75000、V75001 等)。但是,当我只搜索 V7 时,它给了我这个错误:

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 47 bytes) on line 68

    $query->execute(); // LINE 66

    $result = $query->fetchAll(PDO::FETCH_ASSOC); // LINE 68
    }catch (Exception $e) // LINE 69
    {
    die('Cant fetch rows.'); // LINE 70

我想知道我必须更改什么才能让它也显示 V7 磁带?
“V7”磁带的大约数量是 255000

【问题讨论】:

  • V7 磁带的大概数量是多少?
  • @YourCommonSense 当我在 SQL Server Management Studio 中运行它时,它显示接近 255000 个条目。
  • 那么在您看来,将 255k 条目拉入 PHP 数组然后在搜索框中呈现它是完全没问题的? :)
  • 改用fetch,逐行处理。
  • @BartFriederichs 真的吗?

标签: php sql memory


【解决方案1】:

请注意,即使您将 PHP 内存限制设置得更高以允许如此多的结果,向用户发送超过 256 MB 的搜索查询也会使请求非常慢,即使它甚至没有超时。

使用某种分页和limit 您的查询。

【讨论】:

  • 如果我是那个网站的用户,我不会在第一次之后使用那个页面,除非它被分页
猜你喜欢
  • 2012-08-08
  • 2012-10-06
  • 1970-01-01
  • 1970-01-01
  • 2017-05-01
  • 1970-01-01
  • 2018-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多