我有一个脚本从磁盘读取许多小文件(< 2MB)并使用名为ZipStream的库将它们写入zip文件(代码中的行显示了这种情况)。
当使用大量文件运行时,我注意到每次调用addFileFromPath
时(按照上面的链接查看代码中的确切行),为PHP分配的内存增加(memory_get_usage(true)
)和< strong>保持增加,即使该进程正在使用的实际内存使用量(memory_get_usage(false)
)在保留从磁盘读取的文件的变量被删除后仍然很低(正如我所料)。
PHP最终将达到php.ini中定义的内存分配限制。
所以这真的是一个关于PHP如何分配内存与其使用方式的问题。似乎脚本每次将文件读入内存时都会分配内存,而不是重新使用已经分配的内存。这是对的吗?
有没有办法可以将这些小文件读入内存而不会分配内存永远膨胀?