Foros del Web » Programando para Internet » PHP »

escribir en un fichero como si fuera una pila

Estas en el tema de escribir en un fichero como si fuera una pila en el foro de PHP en Foros del Web. Buenas amigos. Me gustaría saber si es posible abrir un descriptor de fichero con fopen y escribir en el pero añadiendo lo que escribes en ...
  #1 (permalink)  
Antiguo 22/12/2009, 03:22
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 15 años, 9 meses
Puntos: 5
escribir en un fichero como si fuera una pila

Buenas amigos.

Me gustaría saber si es posible abrir un descriptor de fichero con fopen y escribir en el pero añadiendo lo que escribes en el principio del fichero.

Estoy haciendo un log y me interesa que el suceso mas reciente me lo muestre en el inicio.

Hasta ahora sólo lo he conseguido de la siguiente forma

Código PHP:
Ver original
  1. if (file_exists('prueba.log'))
  2.   $FILE = file_get_contents('prueba.log');
  3. else
  4.   $FILE = "";
  5.  
  6. for ($i = 0; $i <= 10; $i++)
  7. {
  8.     $FILE = "FECHA: ".date('d/m/Y')." $i ".chr(13).chr(10) . $FILE;
  9. }
  10.  
  11. file_put_contents('prueba.log',$FILE);
  12.  
  13. ///OUTPUT FILE prueba.log
  14.  
  15. //FECHA: XX/XX/20XX 10
  16. //FECHA: XX/XX/20XX 9
  17. //FECHA: XX/XX/20XX 8
  18. //FECHA: XX/XX/20XX 7
  19. //FECHA: XX/XX/20XX 6
  20. //FECHA: XX/XX/20XX 5
  21. //FECHA: XX/XX/20XX 4
  22. //FECHA: XX/XX/20XX 3
  23. //FECHA: XX/XX/20XX 2
  24. //FECHA: XX/XX/20XX 1
  25. //FECHA: XX/XX/20XX 0

Este es el resultado que deseo conseguir pero de esta forma es muy ineficiente ya que te cargas todo el contenido del fichero en una variable. Si suponemos que este fichero puede contener 2.000.000 líneas la cosa será un poco lenta,no??

Probé con fopen, fseek y fwrite pero no encontré lo que buscaba...

Espero me puedan ayudar,...

Saludos y gracias de antemano
__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!
  #2 (permalink)  
Antiguo 22/12/2009, 06:50
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años
Puntos: 50
Respuesta: escribir en un fichero como si fuera una pila

Creo que la forma que usas es la única posible. Piensa que por más que lograras "no leer" todo el archivo, el mismo se tiene que escribir en un clúster del disco y tiene punteros que permiten ubicarlo en el mismo. Es decir, que el archivo tendría que escribirse a partir del lugar donde empieza, no se puede agregar información "antes" (en el disco). Por lo tanto, PHP tendría que "desplazar" todo el contenido anterior con el nuevo antes para que coincida con el comienzo del clúster donde estaba... en definitiva, no te puedes ahorrar demasiado proceso, por más que logres "no leer" el resto del archivo (que además no creo que se pueda). Te recomiendo que renuncies un poco de eficiencia en el programa o que directamente escribas los cambios al final del archivo (como hacen la mayoría de archivos log). ¡Suerte!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:38.