如何在 PHP 中获取临时流的大小?

How to get the size of a temp stream in PHP?

看起来这应该是很明显的,但我似乎无法在任何地方找到答案。假设我使用 php://temp 创建一个流,我如何获得写入数据的长度?

$stream = fopen('php://temp', 'w+');
// ... do some processing here using fwrite, stream_copy_to_stream, stream_filter_append, etc ...
$num_bytes_in_stream = // What goes here? 

您可以使用strlen获取字节数。

$stream = fopen('php://temp','r');
$content = stream_get_contents($stream);
$num_bytes_in_stream = strlen($content);

检查这个问题:

php://temp 使用临时文件。只要未写入任何内容,该文件就是空的。 fopen 需要至少 2 个参数。在这种情况下也可以使用模式“w+”。

$stream = fopen('php://temp','r+');
var_dump(fstat($stream)['size']);  //int(0)

$r = fputs($stream,'1234');
var_dump(fstat($stream)['size']);  //int(4)

rewind($stream);
$str = fgets($stream,'1234');
var_dump($str, fstat($stream)['size']);  //string(4) "1234" int(4)

https://3v4l.org/Hsodg

上试试自己