我有一个小的php脚本,可以删除文件的最后一个字符。
$contents = file_get_contents($path);
rtrim($contents);
$contents = substr($contents, 0, -1);
$fh = fopen($path, 'w') or die("can't open file");
fwrite($fh, $contents);
fclose($fh);
所以它读取文件内容,去掉最后一个字符,然后截断文件并将字符串写回其中。这一切都很好。
我的担心是,这个文件可能包含大量数据,file_get_contents()调用会在内存中保存所有这些数据,这可能会使我的服务器内存达到上限。
有没有更有效的方法来从文件中删除最后一个字符?
谢谢
fseek()
函数将文件指针跳到当前文件大小的位置。如果不这样做,新的字符会填充在文件新旧大小之间,导致中间出现空字符。$position = fstat($fh)['size'] - 1;
ftruncate($fh, $position);
fseek($fh, $position);
- Joshua Dickerson