PHP - удалить последний символ файла

У меня есть немного php script, который удаляет последний символ файла.

$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() будет содержать все эти данные в памяти, которые потенциально могли бы максимизировать память моих серверов.

Есть ли более эффективный способ удалить последний символ из файла?

Спасибо

Ответ 1

Попробуйте это

$fh = fopen($path, 'r+') or die("can't open file");

$stat = fstat($fh);
ftruncate($fh, $stat['size']-1);
fclose($fh); 

Подробнее см. this