【发布时间】:2014-04-30 06:21:26
【问题描述】:
我发布这个以防其他人正在寻找相同的解决方案,因为我只是在这个废话上浪费了两天时间。
我有一个 cron 作业,它每天使用一个非常大的文件更新数据库,使用以下代码:
if (($handle = fopen(dirname(__FILE__) . '/uncompressed', "r")) !== FALSE)
{
while (($data = fgets($handle)) !== FALSE)
{
$thisline = json_decode($data, true);
$this->regen($thisline);
}
fclose($handle);
}
这是在仅用于 cron 作业的 Codeigniter 控制器中。 $this->regen 函数运行一系列不同的检查,并将该行中的正确信息存储在数据库中。该文件本身包含超过 300MB 的 JSON,由换行符分隔。
问题:它只会处理大约 20,000 行,然后整个事情就会耗尽内存。
【问题讨论】:
-
这很酷,但是......这可能应该尽快关闭,因为它不是一个“问题”。
-
是的,我想是的。不过我没有这个能力,所以我得等别人来做。
-
@Cryan 您可以代替使用“解决方案”为此创建答案,然后将其标记为已回答;)
-
哈,我不知道我们能做到这一点:P 感谢您的帮助。
标签: php database codeigniter memory activerecord