【问题标题】:Symfony\Component\ErrorHandler\Error\FatalErrorSymfony\Component\ErrorHandler\Error\FatalError
【发布时间】:2022-01-08 07:02:27
【问题描述】:

我是 laravel 新手

总是得到这个

Symfony\Component\ErrorHandler\Error\FatalError 允许的内存大小 2147483648 字节用尽(尝试分配 2147483656 字节) 此行出错

$arrayGejala = collect([
        substr($gejala1, 14, 1), 
        substr($gejala2, 14, 1), 
        substr($gejala3, 14, 1),
    ])->implode(',');

    $belief = DB::table('pengetahuan')->select(DB::raw("GROUP_CONCAT(penyakit.kode_penyakit)"), 'pengetahuan.bobot')
        ->from('pengetahuan')
        ->join('penyakit', 'pengetahuan.id_penyakit', '=', 'penyakit.id_penyakit')
        ->whereIn('pengetahuan.id_gejala', [(array)$arrayGejala[0],(array)$arrayGejala[2],(array)$arrayGejala[4]])
        ->groupBy('pengetahuan.id_gejala')
        ->get();
        
        $evidence = array();
        while ($row = $belief->first()) {
            $evidence[]=$row;
        }

【问题讨论】:

  • while ($row = $belief->first()) 将导致无限循环。如果$belief->first() 是真的,那么它将永远是真的(函数是“纯的”,即它不会改变集合的状态)。您可能想要做类似$evidence = $belief->all() 的事情而不是循环

标签: php laravel laravel-8


【解决方案1】:

在 php.ini 文件中将最大内存限制增加到 64MB。谷歌搜索 但是我能问一下你为什么要分配这么多内存吗?它在哪一行代码失败?

  1. 在您的 PHP.ini 文件中,更改 PHP.ini 中的行 如果您的行显示 32M,请尝试 64M:memory_limit = 64M ; 脚本可能消耗的最大内存量 (64MB)

  2. 如果您无权访问 PHP.ini,请尝试将其添加到 .htaccess 文件中:php_value memory_limit 64M

【讨论】:

  • 我想从 $belief 中获取数据,代码总是说错误出现在'while'上
  • 增加内存限制不是一个好的解决方案。
  • 是的,也许我只是要删除那个无限循环并找到另一个解决方案。谢谢大家回答
猜你喜欢
  • 2021-05-09
  • 2019-08-02
  • 2021-05-28
  • 2020-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多