Artykuły na każdy temat

[PHP] Odliczanie czasu od danej akcji

Dodano 09.11.2009r. o 23:50
Czasami potrzebne jest sprawdzenie różnicy w czasie miedzy dokonanymi akcjami. Zastosowanie takiego rozwiązania ma sens np. w przypadku łapania robotów sieciowych, które wypełniają formularze zbyt szybko Smile
Kod:
<?php
$cfg['refresh_limit'] = 10// W sekundach
// Inicjowanie sesji naturalnie
session_start();
// Sprawdzamy czy pierwsza akcja została dokonana
if(!isset($_SESSION['countdown']['base']))
{
 $_SESSION['countdown']['base'] = gmmktime();
 echo 'Zainicjowano "wskaźnik", odświeżaj stronę!';
}
else
{
 if(abs($_SESSION['countdown']['base'] - gmmktime()) < $cfg['refresh_limit'])
 {
  echo 'Określony czas jeszcze nie minął';
 }
 else
 {
  // Jeżeli chcesz zresetować czas od którego ma odliczać to nadpisujesz zmienna nowa wartością... i cały proces na nowo
  $_SESSION['countdown']['base'] = gmmktime();
  // Inne akcje
  echo 'Wykonaj akcje po określonym czasie';
 }
}
?>
Naturalnie metodę można rozszerzyć o parę rzeczy lecz darowałem sobie ze względu na to, że chciałem tylko pokazać rozwiązanie. Dla przykładu możemy zapisywać częstotliwość wykonania kolejnych akcji do tablicy. Dalej na podstawie tych danych budujemy swoje wnioski.

Więcej informacji na:
http://php.net/manual/pl/function.abs.php
http://php.net/manual/pl/function.gmmktime.php
http://php.net/manual/pl/function.isset.php
http://php.net/manual/pl/function.session-start.php

Komentarze

Publikowane komentarze są prywatnymi opiniami użytkowników serwisu. Serwis nie ponosi odpowiedzialności za treść opinii. W trosce o zachowanie poziomu dyskusji wszystkie komentarze podlegają akceptacji przed ich publikacją dlatego proszę cierpliwie czekać aż komentarz zostanie opublikowany.

CapaciousCore

Dodano 02.01.2010r. o 12:34
Nie musi być pierwsze o ile nie wysyłamy nic przed tym do przeglądarki.

Dealis

Dodano 02.01.2010r. o 12:32
Nie testowałem tego, ale session_start() powinno być chyba pierwsze.

Dodaj komentarz

Zostaw komentarz jeżeli możesz! Nie bądź przysłowiowym botem! Nie bądź obojętny! Ciebie to nic nie kosztuje, a mi sprawi uśmiech na twarzy.
Zezwolono używać: BBCode
Zabroniono używać:
znaczników HTML

(Wymagany)

(Wymagany, niepublikowany)

(Nie wymagana)

Token:

Obrazek dla bota

(Przepisz tylko cyfry!)

(Wymagana)