在PHP中快速查找数据的方法

时间:2010-06-01 17:48:54

标签: php algorithm

我有一个600,000条记录的数据表大约25兆字节。它由4字节密钥索引。

有没有办法在不使用MySQL的情况下使用PHP快速在这样的数据集中找到行?

有问题的网站主要是静态的,只有很少的PHP代码,没有数据库依赖性,因此速度很快。我想添加这些数据而不必使用MySQL。

在C ++中,我将内存映射文件并在其中进行二进制搜索。有没有办法在PHP中做类似的事情?

3 个答案:

答案 0 :(得分:1)

我会建议memcachedb或类似的东西。如果您要在PHP中完全处理此问题,则脚本必须读取每个请求的整个文件/数据结构。动态地在合理的时间内完成这项工作是不可能的。

答案 1 :(得分:1)

在C ++中,每当用户想要以不同的方式查看文件时,您是否会停止并启动应用程序,因此加载和卸载文件?可能不是,但这就是php与应用程序和应用程序编程语言的不同之处。

PHP提供了一些工具来帮助您处理环境拆解/构建。这些工具是数据库和/或键控缓存实用程序,如memcache。使用正确的工具来完成正确的工作。

答案 2 :(得分:1)

PHP(至少5.3)应该已经过优化以使用mmap(如果它可用)并且它可能是有利的。因此,您可以使用与C ++一样的策略:

  • 使用fopen
  • 打开一个流
  • 使用fseekfread
  • 四处搜索二进制搜索

编辑:实际上,它似乎仅在file_get_contents等其他情况下使用mmap。这应该没关系,但您也可以尝试file_get_contents