导入巨大的JSON编码数组,而不会遇到内存限制

|| 我有一个包含两个JSON数组的文件;一个保存具有4个值的列名,另一个包含10,000+个记录值的数组。 我正在使用Symfony和Propel;在使用json_decode时,它抛出了允许的内存大小。在我的php.ini中,我将最大大小指定为500 MB,但是文件执行了10秒钟并引发了错误。 数据文件包含
{
\"columns_map\":[\"Name\",\"Age\",\"Address\",\"State\"],
\"rows_map\":{\"1\":[\"value1\",\"value2\",\"value3\",\"value4\"],
\"4\":[\"value1\",\"value2\",\"value3\",\"value4\"]
\"6\":[\"value1\",\"value2\",\"value3\",\"value4\"].......upto 10,000 and more records
}
}
在我的Symfony页面中,我有此代码
$file = \"path to the file\";
$content = file_get_contents($file);
$array = json_decode($content);
我想将文件数组值存储到PHP数组和进程中,并且无论php.ini中设置了多少内存限制,我都希望读取它。 我想一次存储所有值或吐出文件并存储(例如读取前1000条记录并循环到末尾,但是如何读取rows_map数组中的前1000条记录?)。     
已邀请:
        确保您正在更新正确的php.ini(在Linux系统上,用于Apache,CGI和CLI的文件通常是分开的)。通过在相同的上下文中检查返回值
ini_get(\'memory_limit\')
,可以确保允许的内存值正在更新。而且,如果您运行的是Apache或某些CGI服务器,请不要忘记重新启动Web服务器。 即使10k的项目也不会耗尽500MB的内存;如果确实如此,您可能会尝试自己解析它时遇到相同的问题。读取和解析原始JSON字符串的块是不切实际的。选择一种更合适的格式,将数据插入数据库,或将数据分块写入单独的文件,然后分别解析每个文件。     
        是否可以单独存储文件?然后,它已经变得容易得多。例如考虑以下结构:
1.json
(前1000行+柱形图)
2.json
(第二千行+列图) 另一个问题可能是推进。我已经观察到了Doctrine的类似问题,这迫使我不得不使用普通的PDO插入对象。教义会阻塞所有内存和cpu,而使用PDO编写的语句很容易处理此类事务。 另一种选择是使用CSV(我知道这是1980年代)。但是它应该允许您每行阅读它。     
        我通过创建自己的带有编码和解码功能的新类来解决了该问题     

要回复问题请先登录注册