PHP将文件映射到虚拟内存中



我使用PHP处理一些大文件(大约500MB到2GB),在这些文件中,我需要在文件中不可预测的位置写入小部分。有没有办法将文件映射到虚拟内存,这样我就不必调用fwrite()fread()了?主要的警告是,它将读取小块数据,但将访问一个文件中的大量数据。

KingCrunch将其钉在头上。。fwritefreadfseek真的是要走的路。。

我能想到的唯一原因是,为什么你可能觉得不想使用它们,也许是因为它们在PHP中有点难以使用?

如果是这种情况,为什么不创建一个简单的包装器类,在内部调用这些方法呢。。

根据评论进行编辑

对于虚拟内存,我理解了windows术语,即映射到文件系统的内存。如果您关心性能,并且可以将整个文件放入内存,那么我现在可以考虑两种途径:

  1. 创建一个tmpfs装载,并将文件放置在那里
  2. 使用php://memory流,并将整个文件与stream_copy_to_stream一起放入其中

您也可以只做一个file_get_contents,它还可以在内存中提供整个流,但我可以肯定地想象tmpfs和php://memory将为您提供更好的性能和内存效率。我个人会选择tmpfs的挂载。

相关内容

  • 没有找到相关文章

最新更新