3

数据库

我正在使用一个具有相当大表的数据库,这给我带来了问题。特别是有超过 120k 行。

我在做什么

我在一个MakeAverage.php文件中循环这个表,以将它们合并到我数据库中一个新表中的大约 1k 行中。

什么不起作用

Laravel 不允许我一次处理所有内容,即使我尝试DB::disableQueryLog()或或take(1000)限制例如。即使启用了我的错误报告(有点像这样),它每次都会返回一个空白页。另外,我没有为此的 Laravel 日志文件。我必须查看我的 php_error.log(我正在使用 MAMP)才能意识到这实际上是一个 memory_limit 问题。

我做了什么

在执行我的代码之前,我使用ini_set('memory_limit', '512M'). (这是不好的做法,我应该在 php.ini 中这样做。)

发生了什么?

有效!但是,Laravel 抛出了一个错误,因为由于数据量很大,页面在 30 秒后没有完成加载。

4

1 回答 1

4

我将要做的

在这个问题上花了一些时间并查看了其他有类似问题的人(参见: Laravel 论坛19453595、1877551012443321 )之后,我认为 PHP 可能不是解决方案。

因为,我只是Table B从 的平均值创建一个Table A,我相信 SQL 将最适合我的需要,因为对于这种类型的操作,它显然比 PHP 快(参见:6449072),我可以使用诸如SUM, AVERAGE,COUNTGROUP_BY(参考)。

于 2013-11-01T00:14:37.857 回答