且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何将文件添加到开头?

更新时间:2022-03-16 07:45:22

file_get_contents 解决方案对于大文件效率低下.此解决方案可能需要更长的时间,具体取决于需要预先添加的数据量(实际上越多越好),但它不会占用内存.

The file_get_contents solution is inefficient for large files. This solution may take longer, depending on the amount of data that needs to be prepended (more is actually better), but it won't eat up memory.

<?php

$cache_new = "Prepend this"; // this gets prepended
$file = "file.dat"; // the file to which $cache_new gets prepended

$handle = fopen($file, "r+");
$len = strlen($cache_new);
$final_len = filesize($file) + $len;
$cache_old = fread($handle, $len);
rewind($handle);
$i = 1;
while (ftell($handle) < $final_len) {
  fwrite($handle, $cache_new);
  $cache_new = $cache_old;
  $cache_old = fread($handle, $len);
  fseek($handle, $i * $len);
  $i++;
}
?>