Ver Mensaje Individual
  #3 (permalink)  
Antiguo 30/03/2005, 12:59
josemi
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Estaria bien que usases $_SERVER, por los temas de register_globals. Y creo que
Código PHP:
for ( $i $i sizeof($arr) ; $i++ )
{
  
$tmp explode(":",$arr[$i]);
  if (( 
$tmp[0] != $REMOTE_ADDR ) && (( time() - $tmp[1] ) < $fin_session ))
  {
    
$contenido .= $REMOTE_ADDR.":".time()." ";
  }

tendria que ser
Código PHP:
for ( $i $i sizeof($arr) ; $i++ )
{
  
$tmp explode(":",$arr[$i]);
  if (( 
$tmp[0] != $REMOTE_ADDR ) && (( time() - $tmp[1] ) < $fin_session ))
  {
    
$contenido .= $tmp[0].":".$tmp[1]."\n";
  }

porque si lo entiendo bien quieres reescribir solo las entradas anteriores que no correspondan con esa IP, manteniendo el tiempo original. Tal como lo tenias, pisabas las IPs viejas y actualizabas los tiempos de conexion.

Tambien haria $contenido una array, igual que lo lees del fichero. Luego lo grabas con un implode, pero no vuelves a leer una segunda vez el fichero, puedes hacer el count de $contenido.

Tambien usaria un foreach en lugar de un for normal, no llamaria a time() dentro del bucle, lo llamaria antes metiendo su valor dentro de una variable y usaria esa variable en el bucle (manias, llamar a una funcion es mas "costoso" que consultar una variable).

Y luego habria que testear los problemas de concurrencia. ¿Que pasa en el hipotetico caso que 2 usuarios a la vez llamaen a esa funcion? ¿Como se comporta?

Saludos.

PD: Son criticas con intencion de ayudarte a mejorar (en mi opinion) el script.
__________________
Josemi

Aprendiz de mucho, maestro de poco.