Originalmente, solo quiero verificar que session_start se bloquea en la sesión. Entonces, creo un archivo PHP como a continuación. Básicamente, si la vista de página es pareja, la página duerme durante 10 segundos; si la vista de página es impar, no es así. Y, session_start se usa para obtener la vista de página en $ _SESSION.¿Cómo se bloquea session_start en PHP?
Intenté acceder a la página en dos pestañas de un navegador. No es sorprendente que la primera pestaña demore 10 segundos ya que explícitamente la dejo dormir. La segunda pestaña no duerme, pero debe estar bloqueada por sessiont_start. Eso funciona como se esperaba
Para mi sorpresa, la salida de la segunda página muestra que session_start lleva casi ningún tiempo. En realidad, toda la página parece no tener tiempo para cargar. Pero la página tarda 10 segundos en mostrarse en el navegador.
obtained lock
Cost time: 0.00016689300537109
Start 1269739162.1997
End 1269739162.1998
allover time elpased : 0.00032305717468262
The page views: 101
¿El extracto de PHP session_start de página PHP y ejecutarlo antes de que otras declaraciones de PHP?
Este es el código.
<?php
function float_time()
{
list($usec, $sec) = explode(' ', microtime());
return (float)$sec + (float)$usec;
}
$allover_start_time = float_time();
$start_time = float_time();
session_start();
echo "obtained lock<br/>";
$end_time = float_time();
$elapsed_time = $end_time - $start_time;
echo "Cost time: $elapsed_time <br>";
echo "Start $start_time<br/>";
echo "End $end_time<br/>";
ob_flush();
flush();
if (isset($_SESSION['views']))
{
$_SESSION['views'] += 1;
}
else
{
$_SESSION['views'] = 0;
}
if ($_SESSION['views'] % 2 == 0)
{
echo "sleep 10 seconds<br/>";
sleep(10);
}
$allover_end_time = float_time();
echo "allover time elpased : " . ($allover_end_time - $allover_start_time) . "<br/>";
echo "The page views: " . $_SESSION['views'];
?>
Nota microtime (1) parámetro útil, haciendo que la función float_time sea obsoleta. –
Compara los dos valores de 'Inicio'. ¿La segunda instancia "comienza" 10 segundos después de la primera? – VolkerK
No puedo confirmar sus resultados. Al presionar Recargar en ambas pestañas para una solicitud pareja, primero corrí 10 segundos y otros 8 segundos como esperaba. Navegador Chrome, PHP5.2.5, Win –