如何在 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)
上试试自己
看起来这应该是很明显的,但我似乎无法在任何地方找到答案。假设我使用 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)
上试试自己