大型php序列化缓存文件超过100mb,如何处理?

时间:2011-02-25 08:50:32

标签: php file serialization

我有这个问题我无法解决。我将序列化格式的数据缓存在一个文件中,由php5读取,并在请求时进行反序列化。现在一些数据文件大100MB-300MB。我已经在其中序列化了对象。

问题是检索此数据将永远完成,如果它已经完成,目前它失败并达到90秒的最大执行时间,将其设置得更高并不是一个好的解决方案。我知道这绝对是一个“代码更好”的想法所以我在这里问。

我想过以小部分检索序列化数据,但不幸的是,序列化数据意味着没有行结尾。也许这是一个noob问题,但我很累。

谢谢

编辑:我自己解决了这个问题。谢谢各位的回应。这就是我做到的,不是最好的,而是2020A.D。之前的临时解决方法。

我“分页”了缓存文件。

突变码是如此

for loop that jumps for 10,000 rows
$dataN = array_splice($mydata,N,10000,true)
fputs($myfileN,serialize($dataN))
end

编辑2: 因此,基本思想是减小文件大小以加快进程。我通过按年/月分割文件来缩小序列化/反序列化。序列化数据是电子邮件标题,因此我更改了序列化以相应地拆分数据并以相同方式读回。对于小文件大小,一切都是至少可操作的(这是我的工作)最终,现在我将更容易迁移到数据库并重做这个东西。 无论你是什么样的(你在IRC / usenet中都是常见的错误评论),有时你必须处理你所得到的并充分利用它。

希望它可以帮助别人。

2 个答案:

答案 0 :(得分:0)

治愈变得比疾病更糟的确切病例。 一个完美的例子向我们展示了为什么过早优化 邪恶。

感谢您为社区提供如此优秀的例子。

答案 1 :(得分:0)

请参阅我原来的问题以获得答案。它已经解决了我的情况。