PHP映射文件到虚拟内存

时间:2012-10-15 20:08:37

标签: php file memory-management handle virtual-memory

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

1 个答案:

答案 0 :(得分:2)

KingCrunch钉在头上.. fwritefreadfseek真的是要走的路..

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

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

根据评论进行修改

对于虚拟内存,我理解了windows术语,它是映射到文件系统的内存。如果您担心性能问题,并且可以将整个文件放入内存中,那么我现在可以想到两条路线:

  1. 创建一个tmpfs挂载,并将文件放在那里。
  2. 使用php://memory信息流,并使用stream_copy_to_stream将整个文件放在那里。
  3. 你也可以只做一个file_get_contents,它也为你提供内存中的整个流,但我可以想象,tmpfs和php://内存将为你提供更好的性能和内存效率。我个人会去tmpfs mount。