伪造文件句柄创建


Fake file handle creation

这可能是不可能的,但我想我会四处询问,看看我是否遗漏了什么。我想要的是一种使用需要文件指针句柄的函数的方法,而无需编写实际的文件。

我知道我可以使用一个临时文件,进行操作,然后将文件读回输出缓冲区并删除该文件。然而,这意味着从写入磁盘到从磁盘读取的延迟。在我的情况下,如果我能做一些类似的事情,对速度和资源来说会更好

$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也是如此。