【发布时间】:2011-02-02 11:30:28
【问题描述】:
我有一个 PHP 脚本,它在 a rather large CSV file (5MB+) 之上构建 binary search tree。这很好,但读取/解析/索引文件大约需要 3 秒。
现在我想我可以使用serialize() 和unserialize() 来加快这个过程。当 CSV 文件在这期间没有发生变化时,再解析也没有意义。
令我惊恐的是,我发现在我的索引对象上调用 serialize() 需要 5 秒并生成一个巨大的 (19MB) 文本文件,而 unserialize() 需要 27 秒才能将其读回。 改进看起来有点不同。 ;-)
那么 - 在 PHP 中是否有更快的机制来将大型对象图存储/恢复到磁盘或从磁盘中恢复?
(澄清一下:我正在寻找能够显着在上述 3 秒内完成反序列化工作的东西。)
【问题讨论】:
-
为什么不将文件中的信息存储到数据库中?
-
因为脚本是一个特别不想使用数据库依赖的工具的一部分。
-
你的索引对象是什么样的?
-
如果您可以完全访问 Web 服务,则可以选择编写专门用于更快 IP2country 搜索的 PHP 扩展模块。此外,监控 CSV 文件修改日期并通过命名管道提供数据的服务也可以满足您的需求。
-
@stereofrog:它是嵌套节点对象的树,每个对象都有一个
$value(浮点数)、一个$payload(字符串)和$left和$right节点引用。没什么特别的,但它包含超过 100,000 个这样的对象。
标签: php serialization