在PHP中如何序列化一个大型数组?

14

我很好奇,在PHP中序列化是否有大小限制。能否将包含5000个键和值的数组序列化以便存储到缓存中?

我希望能在社交网络网站上缓存用户的好友列表,缓存需要经常更新,但几乎每次加载页面时都需要读取。

在单个服务器设置中,我认为APC比memcache更适合这种情况。

13个回答

1

如果您想要缓存它(因此我假设性能是问题),请使用apc_add而不是将其转换为字符串以避免性能损失+在内存中获得缓存。

如上所述,唯一的大小限制是可用内存。

还有一些需要注意的地方: 序列化的数据在多字节和单字节字符编码之间不可移植。 PHP5类包括NUL字节,可能会对不希望它们的代码造成破坏。


1

根据您的使用情况,似乎最好使用数据库来完成这个任务,而不是仅依赖PHP的可用资源。使用MySQL等数据库的优点在于,它们专门针对存储和查找等内存管理方面进行了工程化设计。

不断地序列化和反序列化数据以更新或更改少量信息真的很无聊。


0

我有一个情况,其中unserialize在一个大的序列化对象上抛出异常,大小为65535(魔术数字:16位全位= 65536)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接