在PHP中实现文件序列化的高效内存

时间:2019-02-12 22:42:48

标签: php json serialization

我正在寻找一种将大型数组序列化为PHP中文件的方法。

现在,我使用一种简单的JSON格式。不幸的是,要将JSON存储到文件中,您需要先使用json_encode将其转换为字符串,然后将该字符串写入文件。在此过程中,已用内存量几乎翻了一番(更少)。在某些情况下,如果事情同时发生,可能会成为问题。

我的问题是:是否有一个PHP库(最好是二进制库),它可以将数组序列化为文件(JSON格式会很好),而无需将对象转换为字符串,从而使内存“加倍”。如果可以使用GZIP压缩输出,那就更好了。

也欢迎任何其他建议来写(读)没有中间格式/状态的大对象。

1 个答案:

答案 0 :(得分:0)

如果仅是内存问题

冒着被称为“上尉船长”的风险-我想提出一个奇怪的方法,我想在没有足够的内存并且不得不处理一次仅适用于一次的事情时使用。另外,如果没有发生垃圾收集,可以通过以this article explains的几步完成该工作来解决。

我的意思是这样的:

    function packWithoutExhaustingMemory (array $a) {
        foreach($a as $key => $value) {
            $a[$key] = gzcompress(serialize($value)); // but only one piece at a 
time!
        }
        return $a;
    }

同样,不确定这件作品是否能胜任工作,但它说明了这一概念。