2011-12-02 17 views
10

Mam mały skrypt php, który usuwa ostatni znak pliku.PHP - Usuń ostatni znak pliku

$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);  

Tak to brzmi w zawartości plików, Odcina ostatni znak, a następnie obcina plik i zapisuje ciąg z powrotem do niego. To wszystko działa dobrze.

Obawiam się, że ten plik może zawierać wiele danych, a wywołanie file_get_contents() będzie przechowywać wszystkie te dane w pamięci, co może potencjalnie zwiększyć pamięć moich serwerów.

Czy istnieje skuteczniejszy sposób usuwania ostatniego znaku z pliku?

Dzięki

Odpowiedz

21

Try This

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

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

Aby uzyskać więcej pomocy zobacz this

+0

To wydaje się obcina plik do 0 ..? - A może dlatego, że fopen używa w. Ustawienie na r nie wydaje się jednak działać? – sulman

+0

@sulman - Zaktualizowano – azat

+0

Dziękuję bardzo azat. Działa teraz świetnie :) – sulman