2011-12-02 29 views
10

Tengo un pequeño script php que elimina el último carácter de un archivo.PHP - Eliminar el último carácter del archivo

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

para que se lea en el contenido del archivo, quita el último carácter y trunca el archivo y escribe la cadena de nuevo a él. Todo esto funciona bien.

Mi preocupación es que este archivo podría contener una gran cantidad de datos y la llamada file_get_contents() mantendría todos estos datos en la memoria, lo que podría maximizar la memoria de mis servidores.

¿Hay alguna manera más eficaz de quitar el último carácter de un archivo?

Gracias

Respuesta

21

probar este

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

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

Para obtener más ayuda ver this

+0

que aparece para truncar el archivo a 0 ..? - Ahh tal vez porque fopen usa w. Sin embargo, configurarlo no parece funcionar. – sulman

+0

@sulman - Actualizado – azat

+0

Muchas gracias azat. Funciona muy bien ahora :) – sulman

Cuestiones relacionadas