Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Server side timer, kada se izvršava PHP kod?

[es] :: PHP :: Server side timer, kada se izvršava PHP kod?

[ Pregleda: 1945 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Thumbsucker

Član broj: 33437
Poruke: 96
*.telekabel.ba.



Profil

icon Server side timer, kada se izvršava PHP kod?02.11.2010. u 16:48 - pre 164 meseci
Evo ovako, situacija je slijedeca:

Pravim neku vrstu online kviza u PHP-u, svako pitanje je vremenski ograniceno na 10 sekundi.
Pravljenje timer-a u javascripti ili flashu mi ne odgovara jer se lako moze prevariti.

Znaci jedino sto mi je preostalo je neka vrsta server side timer-a. Problem sam mislio rijesiti na slijedeci nacin:
uvesti sesijsku promjenjivu u koju zapisem vrijeme kada se prikaze pitanje i onda kada stigne odgovor provjeravam da li je trenutno vrijeme manje od te sesijske promjenjive uvecane za 10 sekundi. U isto vrijeme uvesti neku javascriptu sa odbrojavanjem cija je jedina svrha da korisnik vidi timer i da ga obavjesti kada je vrijeme isteklo.

Problem tj pitanje koje imam je slijedece: Kada uvedem tu sesijsku varijablu $_SESSION['vrijeme'] = time() negdje u php kodu ona se moze inicijalizirati prije nego se ucita citava stranica i timer u javascripti, tako da moze doci do razlike u vremenima u php-u i javascripti.

Da li postoji nacin da php provjeri da li se sve ucitalo i tek onda namjesti ovu promjenjivu? Palo mi je na pamet da javascript to odradi i posalje na server signal da se varijabla namjesti, ali onda se i to moze prevariti, tako da bi i to bilo uzalud.

Ovo je vise pitanje za nekog ko poznaje http protokol, mene zanima kada neko ima sporu vezu pa mu recimo browser stane na pola, gdje je ustvari zapelo, da li je recimo php kod izvrsen, a zapelo negdje izmedju?

Da li bi problem bio rjesen ako bi varijablu namjestio u zadnjoj liniji koda, nakon sto uradim echo citavog html-a?
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
212.178.230.*

Sajt: norway.dakipro.com


+190 Profil

icon Re: Server side timer, kada se izvršava PHP kod?02.11.2010. u 16:59 - pre 164 meseci
Mislim da ti pomeranje koda ne bi puno donelo poboljsanja, osim ako ti se php skripta ne ucitava nekoliko sekundi (to je onda problem za sebe).
Mozes neku kombinaciju koristiti, da kad se ocita pitanje odmah tu i JS trigeruje nazad, ali da to vreme ne moze da bude vece od par sekundi recimo od pocetka ocitavanja stranice da ne bi neko udario esc pa posle minut nastavio dalje, ali celokupan problem sa sporim vezama nisam siguran kako ces otkloniti iskreno... Takodje i problem refresha... nekako su mi sva ova resenja klimava u ovom trenutku, ako se setim jos necega kasnije napisacu
 
Odgovor na temu

strutter.poison

Član broj: 264822
Poruke: 115
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: Server side timer, kada se izvršava PHP kod?02.11.2010. u 17:25 - pre 164 meseci
Spora veza nije tvoj problem vec korisnikov. Mozes da minimizujes kolicinu podataka koja se razmenjuje izmedju browser-a i servera. Koristi ajax, neka paketic bude par bajta. Time ces sigurno ubrzati ucitavanje pitanja tj. smanjiti vremenski razmak izmedju startovanja na serveru i momenta kada korisnik pocne da cita.

Moje resenje bi bilo ovako. Ucita se strana i na njoj dugme start. Klikom na dugme pomocu ajax-a startujes skriptu koja ce pokrenuti tajmer i vratiti malo teksta (pitanje ili sta god). Nije cela strana i bice daleko brze. Mozes staviti startovanje tajmera na kraju skripte, ali kao sto dakipro rece to ti nece puno pomoci, verovatno nikako jer se na serveru sve zavrsi u 99% slucajeva za manje od 500ms a ako tvoja aplikacija nije puno zahtevna, dobro optimizovana i server pristojan moze da bude i ispod 100ms.

JS moze dok odbrojava na client side da paralelno proverava tajmer na serveru (u intervalima od 1-2-3 sec) i ispravi eventualnu gresku koja verovatno nece preci jednu sekundu. Ako ispravljanje uradis tako da se sekunda produzi za po 500ms korisnik to nece ni primetiti. Samo da tom prilikom ne ide u minus :). Po isteku vremena (ili ranije klikom od strane korisnika - ako je tako zamisljeno) opet ajax pokrece skrptu na serveru gde obavi poslednja i merodavna provera i to je to.

[Ovu poruku je menjao strutter.poison dana 02.11.2010. u 18:35 GMT+1]
 
Odgovor na temu

Thumbsucker

Član broj: 33437
Poruke: 96
*.telekabel.ba.



Profil

icon Re: Server side timer, kada se izvršava PHP kod?02.11.2010. u 17:26 - pre 164 meseci
Refresh sam rijesio na slijedeci nacin:

Code:

session_start();
if($_SESSION['load'] == true) {
session_destroy();
echo 'Nemoj refresh raditi!';
exit;
}

$_SESSION['load'] = true;

//Prikaz pitanja


Ovaj timer mi je bas problem, treba mi da PHP nekako zna kad korisnik moze da cita pitanje?
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
212.178.230.*

Sajt: norway.dakipro.com


+190 Profil

icon Re: Server side timer, kada se izvršava PHP kod?02.11.2010. u 17:40 - pre 164 meseci
Eto, resenje sa ajaxom mi nije odmah palo napamet :)
samo pitanje i moguce odgovore pozoves ajaxom kada klikne korisnik na Start, i onda kad php vrati nazad JSu pitanja tada setujes sesiju sa vremenom kao sto je strutter.poison rekao
 
Odgovor na temu

mitke013
As Divljine
Freelancer

Član broj: 231934
Poruke: 338
*.dynamic.isp.telekom.rs.



+34 Profil

icon Re: Server side timer, kada se izvršava PHP kod?02.11.2010. u 18:47 - pre 164 meseci
Ideja:
Kad se stranice ucita, pozoves ajax-om http://site.com/settimer.php (nije bitno tacno sta). Taj .php ce da stavi $_SESSION['timer'] = time() ;

JS ce da odbrojava vreme, upozorava korisnika itd...

Kad korisnik posalje odgovor/formu, docekace ga .php koji ce da proveri razliku izmedju time() i $_SESSION['timer'] i ako je vece od 10, znaci da je korisnik varao, tj. iskljucio je JS.
 
Odgovor na temu

Thumbsucker

Član broj: 33437
Poruke: 96
*.telekabel.ba.



Profil

icon Re: Server side timer, kada se izvršava PHP kod?02.11.2010. u 19:04 - pre 164 meseci
@mitke013
Malo je vjerovatno da ce korisnik mjenjati na klijentskoj strani ista, a pogotovo da se zeza sa ajaxom, ali je moguce da neko napravi neki hack da odgodi slanje upita ajaxom.

ideja sa ajaxom je dobra, ali pokusavao sam to da izbjegnem jer nisam nikada nista radio sa ajaxom, ali eto mi sada prilike da malo proucim i to, trebace mi u buducnosti garant.

Volio bi da se problem moze rjesiti i u slucajevim ekstremno spore konekcije, ali sta je tu je.
 
Odgovor na temu

mitke013
As Divljine
Freelancer

Član broj: 231934
Poruke: 338
*.dynamic.isp.telekom.rs.



+34 Profil

icon Re: Server side timer, kada se izvršava PHP kod?02.11.2010. u 19:20 - pre 164 meseci
Citat:
Thumbsucker: @mitke013
Malo je vjerovatno da ce korisnik mjenjati na klijentskoj strani ista, a pogotovo da se zeza sa ajaxom, ali je moguce da neko napravi neki hack da odgodi slanje upita ajaxom.

ideja sa ajaxom je dobra, ali pokusavao sam to da izbjegnem jer nisam nikada nista radio sa ajaxom, ali eto mi sada prilike da malo proucim i to, trebace mi u buducnosti garant.

Volio bi da se problem moze rjesiti i u slucajevim ekstremno spore konekcije, ali sta je tu je.


Jako je lako zaustaviti JS u browser-u, imas mnogo plugin-ova za Firefox koji to rade. Veruj, dovoljan je samo jedak klik na ikonu.

Sto se tice ajax-a; ubacis jQuery i ovako nesto (pisem iz glave):
Code:

$(document).ready(function(){
  $.ajax({url: 'starttimer.php'}) ;
})


Vise na ovom linku.
 
Odgovor na temu

vatri
Banja Luka, RS

Član broj: 68697
Poruke: 1006
*.dynamic.dsl.t-2.net.



+18 Profil

icon Re: Server side timer, kada se izvršava PHP kod?02.11.2010. u 19:22 - pre 164 meseci
strutter ti je dao rjesenje.

Kada korisnik klikne na start, preko AJAX-a mu se pozove skripta koja vrati pitanje (znaci tekst) koji ne moze biti ne znam ja koliko velik - ne bi trebalo dugo trajat. Znaci na serveru se u istoj skripti startuje _SESSION.

Ako koristis jQuery za ajax, imas dogadjaj "success" koji se pokrece nakon sto se ajax uspjesno izvrsi. Tu mozes staviti recimo ovako nesto (mozda je greska u sintaksi nisam radio odavno sa jQuery-jem):

Code:

...
$.ajax{
  url: 'getQuestion.php',
  async: false,
  success: function()
  {
    start_timer();// ovde pokreces JS tajmer
  }
}
...


Nisam siguran, ali mislim da bi "async: false" trebala blokirati browser dok se ne izvrsi AJAX, tako da ti timer nece krenuti prije izvrsavanja server-side skripte...
 
Odgovor na temu

[es] :: PHP :: Server side timer, kada se izvršava PHP kod?

[ Pregleda: 1945 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.