Foros del Web » Programando para Internet » PHP »

Valores NULL al escribir en fichero

Estas en el tema de Valores NULL al escribir en fichero en el foro de PHP en Foros del Web. Hola a todos, Espero que alguien pueda ayudarme, porque estoy realmente desesperado Quiero hacer un seguimiento de las visitas que tengo en una web, capturando ...
  #1 (permalink)  
Antiguo 22/05/2008, 13:11
 
Fecha de Ingreso: mayo-2008
Mensajes: 2
Antigüedad: 16 años, 6 meses
Puntos: 0
Valores NULL al escribir en fichero

Hola a todos,

Espero que alguien pueda ayudarme, porque estoy realmente desesperado

Quiero hacer un seguimiento de las visitas que tengo en una web, capturando cosas coma la IP, la hora, la fecha, etc.

Para ello llamo en cada página a una función PHP llamada "traza()" que obtiene y concatena todos los datos que quiero en una sola cadena y la escribe en un fichero de texto. La función recibe como único parámetro el título de la página (el contenido de la etiqueta <title></title>).

El problema está en que en aproximadamente el 5% de las escrituras que hace en el fichero, me escribe el valor NULL varias decenas de veces antes de escribir la cadena correcta. Este valor NULL lo he descubierto como tal con Notepad++, porque en el Notepad estándar de Windows aparecen como simples espacios en blanco. En EditPlus aparece como un caracter raro, como un cuadrado.

Viendo el fichero, no encuentro ningún patrón que explique cuándo escribe NULL y cuando no. Parece totalmente aleatorio

Aquí tenéis el código. Muchas gracias de antemano.


function traza($titulo){

// Separador entre valores
$spa=";";

// Obtener IP del cliente
$ip = $_SERVER['REMOTE_ADDR'];
// Obtener nombre del host del cliente
$nombredeip = gethostbyaddr($ip);
// Obtener fecha actual
$fecha = date("d\-m\-Y");
// Obtener la hora actual
$hora = date("H\:i\:s");
// Obtener dirección solicitada por el cliente
$pagina = $_SERVER['REQUEST_URI'];
// Obtener dirección origen del cliente
$referer = $_SERVER['HTTP_REFERER'];
if ($referer=="") $referer = "origen_desconocido";


// Concatenar la salida
$acceso=$ip.$spa.$nombredeip.$spa.$fecha.$spa.$hor a.$spa.$referer.$spa.$pagina.$spa.$titulo."\r\n";

// Abrir o crear el fichero
$descriptor = fopen("traza.txt","ab");

// Volcar la cadena concatenada en el fichero
fwrite($descriptor,$acceso);

// Cerrar fichero
fclose($descriptor);
}
  #2 (permalink)  
Antiguo 22/05/2008, 14:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Valores NULL al escribir en fichero

Es probable que al usar el modo "ab", al escribir cause ese problema, ya que cuando tu pasas la "b", se activa el modo binario aunque tu estas escribiendo texto, te recomendaría dejarlo como "a" solamente.

Saludos.
  #3 (permalink)  
Antiguo 23/05/2008, 05:40
 
Fecha de Ingreso: mayo-2008
Mensajes: 2
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Valores NULL al escribir en fichero

Cita:
Iniciado por GatorV Ver Mensaje
Es probable que al usar el modo "ab", al escribir cause ese problema, ya que cuando tu pasas la "b", se activa el modo binario aunque tu estas escribiendo texto, te recomendaría dejarlo como "a" solamente.

Saludos.

Gracias GatorV,

La verdad es que en un principio lo abría solamente con "a", pero lo cambié porque leí en el manual de PHP que se recomendaba utilizar siempre "b" como añadido a las opciones que ya se tuvieran.

Poniendo "a" también me ocurría el mismo problema de los valores NULL al principio de línea :(

Lo que más me extraña es que es algo completamente aleatorio, ocurre sin un patrón aparente en un 4-5% de los casos.
  #4 (permalink)  
Antiguo 23/05/2008, 12:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Valores NULL al escribir en fichero

Puede ser un proceso o algún cliente que entre y no este propagando las variables, deberías de checar que variables son las que se están escribiendo con null.

Saludos.
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 13:00.