2011-12-02 17 views
10

Ho un piccolo script php che rimuove l'ultimo carattere di un file.PHP - Rimuovi l'ultimo carattere del file

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

Così si legge nel contenuto del file, le strisce fuori l'ultimo carattere e quindi tronca il file e scrive la stringa di nuovo esso. Tutto funziona bene.

La mia preoccupazione è che questo file possa contenere molti dati e la chiamata file_get_contents() conserverebbe tutti questi dati in memoria che potrebbero potenzialmente esaurire la memoria del mio server.

Esiste un modo più efficiente per eliminare l'ultimo carattere da un file?

Grazie

risposta

21

provare questo

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

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

Per maggiori spiegazioni, vedi this

+0

che appare per troncare il file da 0 ..? - Ahh forse perché Fopen sta usando w. Impostarlo su r non sembra funzionare comunque? – sulman

+0

@sulman - Aggiornato – azat

+0

Grazie mille azat. Funziona alla grande ora :) – sulman