我正在尝试使用ftruncate从PHP中的文本文件中删除最后一行,但问题是如果行在大多数时间保持变化的长度。而且我不想使用file_put_contents,因此我再次编写该文件,因为该文件可能是以兆字节为单位。
请提出任何建议?
答案 0 :(得分:2)
让你知道我的意思是什么:
$fp = fopen('file.txt', 'r+');
$pos = filesize('file.txt');
while ($pos > 0) {
$pos = max($pos - 1024, 0);
fseek($fp, $pos);
$tmp = fread($fp, 1024);
$tmppos = strrpos($tmp, "\n");
if ($tmppos !== false) {
ftruncate($fp, $pos + $tmppos);
break;
}
}
它将读取最后1024个字节。找到该缓冲区中的最后一个换行符(如果存在)。如果它存在截断到那个位置。如果不存在则读取下一个1024字节并检查它们。等等。