伪造文件句柄创建

3

这可能是不可能的,但我想问一下并看看是否有遗漏。我想要的是在不需要编写实际文件的情况下使用需要文件指针句柄的函数的方法。

我知道我可以使用临时文件,执行操作,然后将文件读回输出缓冲区并删除文件。但是这意味着从磁盘写入然后从磁盘读取的延迟。如果在我的情况下只能像这样做,那么速度和资源会更好。

$tmp = createFakeFile();
fputscsv($tmp, array(/*** an array of csv fields ***/));
echo $tmp;

我怀疑这种方法是否存在,但如果你听说过类似的做法,我很想听听。谢谢。

我相信有一种方法可以在不使用文件的情况下实现相同的事情。你具体想要实现什么? - Simon Germain
我以前遇到过很多次需要虚假文件的情况。现在促使我发布帖子的情况是,我正在创建一个数据的csv文件,但我只想将数据推送到输出流中而不是存储它。我可以创建一个临时文件或编写自己的函数来完成此操作,但我已经知道如何解决这个问题,更多的是想知道是否可能实际使用虚假文件指针,而不是使用变通方法或第三方函数。 - Lee
2个回答

5

你可以使用php://memory和php://temp封装文件来实现这个功能。

引用:

php://memory和php://temp是可读写的流,允许将临时数据存储在类似文件的封装中。两者之间唯一的区别是,php://memory始终将其数据存储在内存中,而php://temp会在存储的数据量达到预定义限制(默认为2 MB)时使用临时文件。此临时文件的位置由sys_get_temp_dir()函数决定。

可以通过追加/maxmemory:NN来控制php://temp的内存限制,其中NN是在使用临时文件之前要保留在内存中的最大数据量,以字节为单位。

http://php.net/manual/en/wrappers.php.php


谢谢,我会看看的。实际上,在关于php://stdout的灵光一闪后,我刚写了几行代码...为什么我总是在发帖之后而不是之前想到解决方案呢 :) - Lee

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接