Sitat av
excubated
Uten å kunne noe som helst om PHP, vil jeg tro de grunnleggende metodene for all programmering er noenlunde like. I så fall kan for eksempel Javascript være en løsning:
Kode
// TOTALLY NOT REAL CODE, lol.
if sessions < 10
deny new session
else
accept new session
Dette er som sagt kun en idé jeg har, med litt under grunnleggende erfaring innen programmeringsspråk ..
Vil ikke hjelpe siden en sesjon ikke har kunnskap om hvor mange sesjoner den brukeren har aktiv. Sesjonsdata er i utgangspunktet privat.
Sitat av
esl
En bruker vil alltid ha en sesjon så jeg skjønner ikke hva du skal begrense..?
Om du skal begrense tiden kan du sette lagre starttidspunktet i en sesjonsvariabel og sjekke om et gitt antall sekunder er gått. Har du et tregt skript\mye loading kan du bruke session_write_close etter du har satt starttiden.
En bruker med 3 browsere vil ha 3 sesjoner til applikasjonen, jeg vil begrense det til f.eks 2.
Sitat av
Molty
--Edit--
Så ikke at trådstarter skrev "på disk".
For trådstarter vil jeg heller anbefale å lagre sesjoner i en database.
I en database tabell hvor du lagrer aktive sesjoner. Hvor hver innlogging får en egen key.
Vil og anbefale at du tilbyr at man kan huske innloggingen via cookie.
Når du finner en key som eksisterer for brukeren, oppdaterer du bare sist logget på i et av feltene i samme tabell som keyen.
Når du IKKE finner en valid key OG det er maks antall sesjoner for den brukeren, fjerner du den som sist var aktiv ved å skrive f.eks
ORDER BY last_logged ASC
(tror den skal sortere etter laveste først og så stige, aka den gamleste kommer først)
og så legger du til den nye. Var det godt nok forklart?
- Molty
Blir det samme egentlig som å bruke sesjonsdata som ligger på disk, men ja jeg forstår hva du mener.
Sitat av
Fortran
For å vite om ei session-fil hører til en gitt bruker, kan du lagre brukernavnet i en session-variabel. Så kan du deserialisere alle session-filene og slette de som matcher brukernavnet.
Det er brute force og lite effektivt, så du bør heller legge inn en tabell i databasen med kolonner for timestamp, bruker-ID og session-ID. Da kan du spøle gjennom tabellen og slette filene <session.save_path>/sess_<session-ID> kjapt og enkelt.
PHP utfører garbage collection på session-filene, så du må håndtere at filer allerede er slettet.
Det gjør jeg allerede. Dog ser jeg ikke hvordan dette er ueffektiv måte å gjøre det på, tror sql kall har høyere overhead enn å lese 100+ filer på disk.