【问题标题】:Laravel 5: Heavy Select QueryLaravel 5:重选查询
【发布时间】:2015-05-10 18:47:19
【问题描述】:

我的数据库表“电影”中有大约 25.000 行(InnoDB,17.5 mb) 当我试图让它们全部显示在我的管理面板中时,什么也没有发生。只需 5-8 秒等待和白屏。没有显示错误,什么都没有。 (最大执行时间是 3600 秒,因为它在我的本地机器上)。我的简单代码:

public function index()
{
    $data['movies'] = Movies::all();

    dd('This var_dump & die never fires');

    // return view('admin.movies', $data);
}

我只是想知道为什么它不执行查询并且不宣战就死了。

我没有在 .ENV 或 config/database.php 中找到任何有趣的东西来解释在这种情况下会发生什么。

PS。是的,我可以进行服务器分页和搜索,并且只从数据库中获取 10-25 条记录,问题不在于这个。

【问题讨论】:

  • 如果您尝试一次加载 25k 条记录,那么所有的赌注都将失败 - 更不用说为每个记录创建 Eloquent 对象了。
  • 是否涉及 PHP?对于某些形式的数据,扩展因子为 40 倍。如果这适用于您的情况,那么它会爆炸到近 1 GB。
  • 您是否期望浏览器可以处理此类数据,而不是服务器首先吐出数据。

标签: laravel eloquent innodb laravel-5


【解决方案1】:

看起来您的内存不足。尝试查询一半的结果,或者只查询 100 个,看看是否至少修复了白页,如果是,请使用块:

Movies::chunk(200, function($movies)
{
    foreach($movies $movie)
    {
        var_dump($movie);
    }
});

【讨论】:

    【解决方案2】:

    您绝对应该查看您的storage\logs 目录以验证错误。很可能需要大量内存才能获得 25k 行。

    事实上,正如您在现实生活中提到的,没有必要获取这么多行,因为除非您将它们导出为 CSV 或 XLS。

    【讨论】:

      猜你喜欢
      • 2017-01-05
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 2021-12-21
      • 2017-11-17
      • 2016-05-06
      • 1970-01-01
      相关资源
      最近更新 更多