Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/06/2015, 01:45
Avatar de Atomycko
Atomycko
 
Fecha de Ingreso: diciembre-2005
Ubicación: Zapopan Jal.
Mensajes: 92
Antigüedad: 18 años, 4 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.