Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/05/2011, 13:08
LhaN
 
Fecha de Ingreso: septiembre-2008
Mensajes: 148
Antigüedad: 16 años, 1 mes
Puntos: 10
Problemas al generar un log en txt (doble log)

Buenas, estoy teniendo un problema muy raro. Estoy haciendo un generador de caminos aleatorios. Tengo una clase mapa, que tiene una grilla donde guardo el nombre del tile que corresponde a la posicion x,y. Luego genero una imagen con GD usando la grilla y la muestro en la pagina (en realidad la salida del php es la imagen). A raiz de unos problemitas que tenia al realizar el camino (aunque no viene al caso, me esta generando caminos rectos a pesar de a nivel logico colocar curvas). Asi que decidi a modo de debuggin hacer un log de lo que hace el codigo. En resumen tengo lo siguiente:

Código PHP:
Ver original
  1. <?
  2. class Mapa{
  3. //atributos varios
  4. function Mapa($_ancho,$_alto){//el constructor
  5.     Global $c;
  6.     $c++;
  7.     $this->logFile=fopen('Log-'.date("ydm").'-'.date("His").'.txt','a+');
  8.     fwrite($this->logFile,$c.'function Mapa($,$) on line 22'.chr(13).chr(10));
  9.     $this->ancho=$_ancho;
  10.     $this->alto=$_alto;
  11.     $this->inicializarGrilla();//No llama ninguna otra función
  12.     $this->crearCaminos();//Llama varias subfunciones...
  13.     fclose($this->logFile);
  14.     $this->pintarMapa(false);//Lee la grilla y construye una imagen png y la devuelve con header('Content-Type: image/png');
  15. }
  16. //los demás métodos
  17. }
  18. //fuera de la clase
  19. $c=0;
  20. $mapa=new Mapa(8,8);
  21. ?>

El problema es que me genera 2 logs (bien en un mismo archivo o en dos archivos):
1function Mapa($,$) on line 22
function inicializarGrilla() on line 24
function determinarEntrada() on line 22
Entrada: f7-c5 Orientación:90
1function Mapa($,$) on line 22
function inicializarGrilla() on line 24
function determinarEntrada() on line 22
Entrada: f0-c3 Orientación:270

Cuando me lo genera en dos archivos la diferencia es que el nombre de uno lleva el segundo 16 por ejemplo y el del otro el segundo 17.

Si comento la llamada al método pintarMapa() no sucede ese problema... pero pintarMapa simplemente lee de la grilla... y como se ve el archivo ya fue cerrado antes de la llamada a dicho método... no entiendo como puede afectar ese método a la generación de log.

Por cierto... el 1 al principio del log es la variable $c, que es global pero como se ve en el log... para el segundo log no se ha incrementado... es como si yo cargara la pagina 2 veces... sin embargo al momento de ver la imagen veo la correspondiente al primero log... el segundo log es como un log fantasma (que cuando me los crea en dos archivos, es el segundo archivo). Así que no es que yo recargue la pagina dos veces... de ser así, la imagen se correspondería con el segundo log y no con el primero.

Alguna sugerencia?