PHP 在不将其加载到内存中的情况下将其添加到文件中?

And*_*rew 2 php memory filesystems

我认为标题几乎说明了一切。我想在现有的 TXT 文件中添加一个字符串(单行)。现有文件可能非常大,因此我正在尝试考虑最经济高效的方法。

我知道以下方法会起作用:

$str = 'My new line';
$str .= file_get_contents('file.txt');
file_put_contents('file.txt', $str);
Run Code Online (Sandbox Code Playgroud)

不得不加载一个巨大的文件来只添加一行似乎有点过分。

想法?

Mar*_*ker 5

我倾向于使用 PHP 流php://temp,它不使用与 PHP 相同的内存,因此不受相同限制

$src = fopen('dummy.txt', 'r+');
$dest = fopen('php://temp', 'w');

fwrite($dest, 'My new line' . PHP_EOL);

stream_copy_to_stream($src, $dest);
rewind($dest);
rewind($src);
stream_copy_to_stream($dest, $src);

fclose($src);
fclose($dest);
Run Code Online (Sandbox Code Playgroud)