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