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

Kraj sesije - notifikacija!!!

[es] :: PHP :: Kraj sesije - notifikacija!!!

[ Pregleda: 2506 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

tomdam
Tomic Damjan
Beograd

Član broj: 2495
Poruke: 36
*.etf.bg.ac.yu.

ICQ: 135970738
Sajt: localhost


Profil

icon Kraj sesije - notifikacija!!!04.01.2006. u 03:59 - pre 222 meseci
Pozdrav svima.
Interesuje me da li u PHPu postoji način da definišem koja funkcija će se izvršiti u trenutku kad se sesija završi!?
U asp-u postoji ta mogućnost. U fajl Global.asa stavite
Code:

Sub Session_OnEnd()
 'Ovde ide "uništavanje" resursa
End Sub

i bez obzira na to da li ste vi inicirali uništenje sesije, ili je ona uništena zbog timeout-a ova funkcija će biti pozvana.

Našao sam način da redefinišem sve stvari vezane za session handling, (pomoću session_set_save_handler() ) ali to mi ne treba. Nije me briga šta će php da radi sa sesijskim promenljivima, tj. kako će da ih čuva. Bitno mi je da znam kada je sesija završena.
U slučaju session_set_save_handler() jedan od njenih parametara je i "gc" handler, tj funkcija koja se izvršava kad se pokrene garbage collector, što je čini mi se ono što meni treba. Da li postoji način da overidde-ujem samo ovu funkciju???

pozdrav,
Damjan.
 
Odgovor na temu

broker

Član broj: 2415
Poruke: 8514
212.62.59.*



+11 Profil

icon Re: Kraj sesije - notifikacija!!!04.01.2006. u 08:32 - pre 222 meseci
PHP sesija moze biti prekinuta u bilo kom trenutku (korisnik zatvori browser) i ti ne mozes imati kontrolu nad tim.

Ono sto mozes da radis, to je da na serveru cuvas podatke o aktuelnim sesijama pa da, u trenutku kada ubijas zaostale sesije uradis to sto ti treba.
 
Odgovor na temu

tomdam
Tomic Damjan
Beograd

Član broj: 2495
Poruke: 36
*.ETF.BG.AC.YU.

ICQ: 135970738
Sajt: localhost


Profil

icon Re: Kraj sesije - notifikacija!!!05.01.2006. u 02:02 - pre 222 meseci
Citat:
broker: PHP sesija moze biti prekinuta u bilo kom trenutku (korisnik zatvori browser) i ti ne mozes imati kontrolu nad tim.


Slazem se da ne mogu imati kontrolu nad tim da li je korisnik zatvorio browser, da li mu je pukla veza, nestalo struje, ... ali to je samo jedna strana price. Jer , iako je covek mozda zatvorio browser, sesija na serveru i dalje traje, te on (ukoliko ima kuki ili bar sesID u query string-u) mozda moze da je nastavi posle nekog vremena.

Citat:
broker:
Ono sto mozes da radis, to je da na serveru cuvas podatke o aktuelnim sesijama pa da, u trenutku kada ubijas zaostale sesije uradis to sto ti treba.

Interesuje me da li mogu da znam trenutak u kome ce sesija biti izbrisana sa servera!?
To je upravo ovo sto si napisao ovde.
Taj trenutak kad sesije bivaju ubijene, ali ne od strane mog kooda, vec od strane Web Servera.

Resenje za moj problem je to da prilikom svake korisnikove akcije upisem tekuce vreme u bazu, i proverim da li postoje korisnici cija poslednja akcija se desila pre odredjenog vremena (npr. 10 minuta). Ukoliko takvi postoje, brisem ih iz tabele ulogovanih korisnika, ali mi se cini da je glupo ovo svaki put proveravati!!! Ili nije???!!!

Cela prica je vezana za to da znam koji korisnici su trenutno ulogovani na sajt!
Ako imate ( a ubedjen sam da imate) iskustvo sa ovim, bilo bi super kad bi neko napisao "najbolji" nacin da se ovo izvede.

pozdrav.

[Ovu poruku je menjao tomdam dana 05.01.2006. u 03:04 GMT+1]
 
Odgovor na temu

The Sekula

Član broj: 53829
Poruke: 76
*.eunet.co.yu.

Sajt: www.sekulovic.net


Profil

icon Re: Kraj sesije - notifikacija!!!05.01.2006. u 08:47 - pre 222 meseci
Ne znam da li ce ti ovo pomoci, ali ako se ne varam jedini nacin je da iskljucis session garbage collection (tj. podesis session.gc_probability na 0) a da zatim napravis skriptic (php) koji ce raditi garbage collection i koji ce se izvrsavati na svakih par minuta. Taj skript bi trebao da proverava session direktorijum i da uzima spisak svih sesija, da analizira svaku sesiju da vidi da li je treba ukloniti, ako treba da uradi sta vec zelis da radis i da zatim obrise fajl.


 
Odgovor na temu

broker

Član broj: 2415
Poruke: 8514
212.62.59.*



+11 Profil

icon Re: Kraj sesije - notifikacija!!!05.01.2006. u 09:38 - pre 222 meseci
Citat:
tomdam: Interesuje me da li mogu da znam trenutak u kome ce sesija biti izbrisana sa servera!?
To je upravo ovo sto si napisao ovde.
Taj trenutak kad sesije bivaju ubijene, ali ne od strane mog kooda, vec od strane Web Servera.

Resenje za moj problem je to da prilikom svake korisnikove akcije upisem tekuce vreme u bazu, i proverim da li postoje korisnici cija poslednja akcija se desila pre odredjenog vremena (npr. 10 minuta). Ukoliko takvi postoje, brisem ih iz tabele ulogovanih korisnika, ali mi se cini da je glupo ovo svaki put proveravati!!! Ili nije???!!!

Cela prica je vezana za to da znam koji korisnici su trenutno ulogovani na sajt!
Ako imate ( a ubedjen sam da imate) iskustvo sa ovim, bilo bi super kad bi neko napisao "najbolji" nacin da se ovo izvede.


Najbolji nacin je da ti to sve kontrolises. Napravi posebnu tabelu u kojoj ces cuvati podatke o sesijama, id, vreme kada je zapoceta, vreme poslednjeg pristupa korisnika u toj sesiji, IP sa koga je zapoceo sesiju, username, da li je ulogovan i slicno.

S vremena na vreme brisi sve sesije kod kojih je vreme poslednjeg pristupa ranije od nekog vremena koje ti sam zadas (moze biti minut a moze biti i sat-dva). U trenutku brisanja imas punu kontrolu i znas sta ces da uradis.

Nemoj se oslanjati na autoamtiku vezanu za sesije koju nudi sam PHP. Ako on pobrise sesiju kao neaktivnu ti nad tim nemas kontrolu. Automatika koju ti obezbedjuje PHP je namenjena samo za proste slucajeve gde ti samo trebaju osnovne mogucnosti prenosenja vrednosti kroz promenljvie sesije. Cim u zahtev upletes login, ili tvoju potrebu da nesto uradis prilikom isteka sesije, moras sam preuzeti kontrolu nad sesijama, rucno ih kreirati i rucno ubijati.
 
Odgovor na temu

[es] :: PHP :: Kraj sesije - notifikacija!!!

[ Pregleda: 2506 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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