这可能是不可能的,但我想我会四处询问,看看我是否错过了什么。我正在寻找的是一种使用需要文件指针处理的函数而无需编写实际文件的方法。
我知道我可以使用临时文件,执行操作然后将文件读回输出缓冲区并删除文件。但是,这意味着从写入磁盘然后从磁盘读取的延迟。如果我可以做一些像
这样的事情,那么在我的情况下速度和资源会好得多$tmp = createFakeFile();
fputscsv($tmp, array(/*** an array of csv fields ***/));
echo $tmp;
我怀疑这是否存在,但如果您曾经听说过这样做的方式,我很乐意听到它
由于
答案 0 :(得分:5)
你可以使用php:// memory和php:// temp包装文件。
引用:
php:// memory和php:// temp是允许的读写流 临时数据存储在类似文件的包装器中。唯一的 两者之间的区别在于php://内存将始终存储它 内存中的数据,而php:// temp将使用一个临时文件 存储的数据量达到预定义的限制(默认值为2 MB)。 此临时文件的位置以与以下相同的方式确定 sys_get_temp_dir()函数。
php:// temp的内存限制可以通过追加来控制 / maxmemory:NN,其中NN是要保留的最大数据量 使用临时文件之前的内存,以字节为单位。
答案 1 :(得分:1)
确实有办法:stream_wrapper_register()
。
This示例类应该按照您的意愿执行,它会创建一个实际上只保存在内存中的文件句柄。
话虽如此,php://memory
也在某种程度上php://temp
。