Foros del Web » Programando para Internet » PHP »

No entiendo la razon de esto...

Estas en el tema de No entiendo la razon de esto... en el foro de PHP en Foros del Web. Buen dia. He creado una simple funcion para mostrar lapsos de tiempo, la cosa es que al principio no funcionaba pues me retornaba el mismo ...
  #1 (permalink)  
Antiguo 07/06/2015, 01:45
Avatar de Atomycko  
Fecha de Ingreso: diciembre-2005
Ubicación: Zapopan Jal.
Mensajes: 92
Antigüedad: 18 años, 3 meses
Puntos: 12
No entiendo la razon de esto...

Buen dia.

He creado una simple funcion para mostrar lapsos de tiempo, la cosa es que al principio no funcionaba pues me retornaba el mismo indice (creado con uniqid) en cada invocacion, asi que tuve que agregar un retraso de 1 millonesima de segundo para que funcionara, pero no entiendo porque sin eso no funciona.

La funcion es la siguiente:
Código PHP:
function lapso($idx false){
    static 
$lapsos = array();

    
// si le quito esto no funciona correctamente
    
usleep(1);

    if(
$idx === false){
        
$idx uniqid(time());
        
$lapsos[$idx] = microtime();
        return 
$idx;
    }
    if(isset(
$lapsos[$idx])){
        list(
$ini_m$ini_s) = explode(' '$lapsos[$idx]);
        
$ini = (float)$ini_s + (float)$ini_m;
        list(
$fin_m$fin_s) = explode(' 'microtime());
        
$fin = (float)$fin_s + (float)$fin_m;
        unset(
$lapsos[$idx]);
        return 
$fin $ini;
    }
    return 
0;

La apicacion:
Código PHP:
$lps1 lapso();
$lps2 lapso();
sleep(1);
echo 
'Lapso 1: 'lapso($lps1), '<br />';
sleep(1);
echo 
'Lapso 2: 'lapso($lps2), '<br />'
Alguien sabe porque sin ese usleep(1) no funciona?
__________________
PD: Los acentos fueron secuestrados.
  #2 (permalink)  
Antiguo 07/06/2015, 22:36
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: No entiendo la razon de esto...

Puer por que el procesador funciona en micronesimas de segundo.
cuantos segundos crees que es 1Ghz (suponiendo que el procesador de la maquina es de 1Ghz).
te explico.
1Ghz= un billon de siclos por segundo.

una funcion matematica de if toma un siclo aprox. asi que imaginate cuantos siclos toma para ejecutar tu funcion, yo calculo unos 3 ciclos aprox.

:)

Etiquetas: Ninguno
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 12:08.