【发布时间】:2013-11-11 23:12:30
【问题描述】:
数据库
我正在使用具有相当大表的数据库,这给我带来了问题。特别是有超过 120k 行。
我在做什么
我在 MakeAverage.php 文件中循环遍历此表,以将它们合并到我数据库中新表中的大约 1k 行中。
什么不起作用
Laravel 不允许我一次处理所有内容,即使我尝试使用 DB::disableQueryLog() 或 take(1000) 限制。即使启用了我的错误报告(有点像this),它每次都会返回一个空白页。另外,我没有为此的 Laravel 日志文件。我必须查看我的 php_error.log(我正在使用 MAMP)才能意识到这实际上是一个 memory_limit 问题。
我做了什么
在执行我的代码之前,我使用ini_set('memory_limit', '512M') 增加了内存量。 (这是不好的做法,我应该在 php.ini 中这样做。)
发生了什么?
成功了!但是,Laravel 给我报错了,因为数据量很大,30s 后页面没有完成加载。
【问题讨论】:
-
听起来你没有在
average.php中正确循环$table。你能发布你在那里的相关代码以及你用来创建$table的代码吗? -
如果您还没有检查错误日志 - 这可能是错误而不是内存限制。您通常会收到关于内存限制问题而不是空白页的错误 - 我猜错误报告已关闭?
-
一件小事,但我不认为这是你的全部问题...
Trialdata::all()->get()将不起作用,应该是Trialdata::all()。那应该会引发错误,因为它对我来说确实如此。 -
@fideloper 我的错误报告已开启。我的日志说:
exception 'ErrorException' with message 'Use of undefined constant memory_limit - assumed 'memory_limit'' -
@user1669496 确实,我在这里写代码时犯了一个错误,但我的原始文件很好。即使我添加了
->get(),它也不会给我一个错误,就像 Laravel 在阅读::all()后停止一样。之后写入的所有内容都不会被处理。
标签: mysql sql database laravel-4 database-performance