2016-04-05 10 views
0

Hey guys Ben son kez kullanıcı düğmesine bastığında 10 dakika boyunca saymak için bir sayaç yapmaya çalışıyorum (eskiden istenen herhangi bir şey için).PHP'de zamanlayıcıyı son istek formunu sayabilen sayacı nasıl yapmalıyım?

Ne yaptım, Mysql'de zaman damgası aldım ve kod aşağıda.

$timequery =" SELECT NOW() AS cur, (SELECT lastclaim FROM table1 WHERE id =".$id.") AS mytime "; 
if($qry=mysql_query($timequery)) 
{ 
    $timer1 =strtotime(mysql_result($qry, 0,'mytime')); 
    $timer2 =strtotime(mysql_result($qry, 0,'cur')); 
    $timer = abs($timer2 - $timer1); 
    return $timer; 
} 

Lütfen bu sorun için daha iyi bir mantık önerin veya bu kodu geliştirmek için bana yol göster.

+0

Ayrıca JS'de veya çerezlerle de yapabilirsiniz, bu sizin için mümkün mü? – Random

cevap

0

IMUO veritabanında sormaya gitmezdim, bunu SESSIONs ile yapabilirdiniz ve daha az DB erişimine sahip olacaksınız. IE Eğer böyle bir şey yapmak coud: sen/siz gerçek koduna if{}else{} bölümünü değiştirebilir veritabanına kaydetmek istediğiniz gerekiyorsa

$nowtime = date('Y-m-d h:i:s'); 

if(isset($_SESSION['timeOfLastAction']){ 
    $timeOfLastAction = $_SESSION['timeOfLastAction']; 
}else{ 
    $timeOfLastAction = $nowtime; 
} 

$endtime = strtotime($timeOfLastAction) + 600; // 10 minutes == 600 seconds 

if($nowtime > $endtime){ //10 min or more from last action 
    //do your stuff 
    $_SESSION['timeOfLastAction'] = date('Y-m-d h:i:s'); //reassing 
} 

.. ama, veritabanı, mağaza değerine erişmek değeri güncellemek zorunda her bir talebin, vb gibi bir mysql yerli işlevini kullanabilirsiniz: aralığı> 10 dk yalnızca

SELECT * FROM table1 
WHERE lastclaim <= NOW() - INTERVAL 10 MINUTE 
AND id=$id 

Ve PHP'de veri manipülasyonu önlemek olacaktır, bir user recive edecektir. İşte

senin bir benzer sorunu: Adding 10 minutes to a date from mysql datetime and comparing it to the time now

Ben yardımcı umut!