*快速*序列化/反序列化?
我有一个PHP脚本,通过一个相当大的CSV文件(5MB +)构建二叉搜索树。 这很好,但是大约需要3秒来读取/解析/索引文件。
现在我想我可以使用serialize()
和unserialize()
来加快进程。 在此期间,如果CSV文件没有改变,则再次解析它没有意义。
令我惊恐的是,我发现在我的索引对象上调用serialize()
需要5秒钟,并产生一个巨大的(19MB)文本文件,而unserialize()
需要27秒才能读取它。 改进看起来有点不同。 ;-)
所以 - 是否有更快的机制在PHP中将大型对象图存储到/从磁盘恢复?
(为了澄清:我正在寻找的东西比上述3秒做的反序列化工作要少得多。)
看来你的问题的答案是否定的。
即使您发现“二进制序列化格式”选项,最有可能甚至会减慢您的设想。
所以,你可能需要研究的(如其他人所提到的)是一个数据库,memcached或在线Web服务。
我想添加以下想法:
var_export
应该快很多,因为PHP根本不需要处理字符串:
// export the process CSV to export.php
$php_array = read_parse_and_index_csv($csv); // takes 3 seconds
$export = var_export($php_array, true);
file_put_contents('export.php', '<?php $php_array = ' . $export . '; ?>');
然后在需要时包含export.php:
include 'export.php';
根据您的Web服务器设置,您可能必须chmod
export.php才能使其可执行。
尝试igbinary ...为我做了奇迹:
http://pecl.php.net/package/igbinary
链接地址: http://www.djcxy.com/p/57665.html