Başlangıçta, sadece oturumu o session_start kilitleri doğrulamak istiyorum. Yani, aşağıdaki gibi bir PHP dosyası oluşturun. Sayfa görünümü bile eğer Temelde, sayfa 10 saniye boyunca uyur; sayfa görünümü tek ise, öyle değil. Ve, session_start $_SESSION de sayfa görünümü elde etmek için kullanılır.
Ben bir tarayıcı iki sekme sayfasına erişmek için çalıştı. Ben bunu açıkça uyusun yana ilk sekme 10 saniye sürer bu şaşırtıcı değildir. İkinci sekme uyku olmaz, ama sessiont_start tarafından bloke edilmelidir. Beklendiği gibi çalışır.
Benim için sürpriz, ikinci sayfanın çıkış session_start hemen hemen hiçbir zaman alır gösterir. Aslında, tüm sayfayı yüklemek için hiçbir zaman alır gibi görünüyor. Ancak, sayfa tarayıcıda göstermek için 10 saniye sürer.
obtained lock
Cost time: 0.00016689300537109
Start 1269739162.1997
End 1269739162.1998
allover time elpased : 0.00032305717468262
The page views: 101
Yapar PHP özü session_start PHP sayfası üzerinden ve diğer PHP ifadeleri önce çalıştırmak?
Bu kodudur.
<?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'];
?>