Is een sessie nog actief ?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Paco de Wulp

Paco de Wulp

16/06/2013 23:37:08
Quote Anchor link
Hoe kan ik zien of een andere (PHP)sessie (dus niet mijn eigen sessie) nog actief is ?
(het betreffende session_id heb ik in een tabel bewaard)
Gewijzigd op 16/06/2013 23:37:32 door Paco de Wulp
 
PHP hulp

PHP hulp

17/11/2024 18:22:58
 
Frank Nietbelangrijk

Frank Nietbelangrijk

16/06/2013 23:47:58
Quote Anchor link
door naast de sessie-id een DATETIME te plaatsen met de huidige datum en tijd er in kun je vervolgens vergelijken hoe oud de sessie is.
 
Ozzie PHP

Ozzie PHP

16/06/2013 23:52:40
Quote Anchor link
@Frank: stel mijn sessie is een uur geldig. Na 55 minuten doe ik iets, dan wordt de sessie weer met een uur verlengd. Ga je dan bij iedere activiteit de datetime opslaan?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

17/06/2013 00:12:50
Quote Anchor link
Ozzie, ja.
 
Erwin H

Erwin H

17/06/2013 00:14:07
Quote Anchor link
Sessies worden gewoon opgeslagen in tekst bestandjes op je server. Als je het sessie id hebt kan je dus het bijbehorende bestandje zoeken. Volgens mij, maar dat moet je dan even testen, blijft het bestand bestaan zolang als de sessie actief is.
Waar ze precies staan is afhankelijk van je server overigens. Er zal vast een leuke functie binnen php zijn om de directory te vinden, maar die ken ik niet.
 
Ozzie PHP

Ozzie PHP

17/06/2013 00:26:41
Quote Anchor link
Erwin H op 17/06/2013 00:14:07:
... Volgens mij, maar dat moet je dan even testen, blijft het bestand bestaan zolang als de sessie actief is.

Dit is deels waar. De bestanden blijven namelijk ook nog bestaan als de sessie inactief is. De bestanden worden opgeruimd door de garbage collector en hoe vaak dat gebeurt hangt af van je configuratie instellingen. Het kan best zo zijn dat een sessie bestand dat 1 uur geldig is 2 dagen later nog steeds op de server staat.
 
Paco de Wulp

Paco de Wulp

17/06/2013 00:48:02
Quote Anchor link
Wat voor informatie staat er in zo'n sessie-bestandje ?
Misschien wel of deze nog actief is (in het geheugen nog aanwezig is of niet ?).
 
Ozzie PHP

Ozzie PHP

17/06/2013 00:58:21
Quote Anchor link
Nee, dat staat er niet in. Alleen de info die jij erin zet.
 
Chris PHP

Chris PHP

17/06/2013 07:42:39
Quote Anchor link
Als je PHP 5.4 draait kun je session_status() gebruiken.
 
Paco de Wulp

Paco de Wulp

17/06/2013 10:12:44
Quote Anchor link
Chris NVT op 17/06/2013 07:42:39:
Als je PHP 5.4 draait kun je session_status() gebruiken.


Maar session_status gaat juist over je huidige eigen sessie. Ik wil juist de status zien van andere sessies.
 
Ward van der Put
Moderator

Ward van der Put

17/06/2013 11:46:00
Quote Anchor link
Wat wil je precies van de sessies weten? Je hebt maximale controle over alle sessies als je ze via een database laat lopen. Wil je echter bijvoorbeeld alleen maar de actieve sessies tellen, dan kun je de garbage collector aan het werk zetten en daarna via session_save_path() sessiebestanden tellen.
 
Ozzie PHP

Ozzie PHP

17/06/2013 12:17:37
Quote Anchor link
@Ward: hoe kun je de garbage collector handmatig aan het werk zetten?
 
Chris PHP

Chris PHP

17/06/2013 12:26:32
Quote Anchor link
@Ozzie,

Het enige wat ik kan vinden is dit.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<broker>
  ...
  <auto_gc interval="10">
  ...
</broker>
 
Ward van der Put
Moderator

Ward van der Put

17/06/2013 12:43:43
Quote Anchor link
De kans dat de garbage collector (gc) wordt gestart, is gelijk aan:

session.gc_probability / session.gc_divisor

Dus bij 100 / 100 of 1 / 1 is de kans 1.0 = 100%.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
// In een admin- of backoffice-script
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor',     1);
session_start();
?>
 
Ozzie PHP

Ozzie PHP

17/06/2013 13:26:43
Quote Anchor link
Ah oke... via ini_set. Echter, als je in de back-office zit is je sessie natuurlijk vaak al gestart.... :-s
 
Ward van der Put
Moderator

Ward van der Put

17/06/2013 13:29:34
Quote Anchor link
Ozzie PHP op 17/06/2013 13:26:43:
Ah oke... via ini_set. Echter, als je in de back-office zit is je sessie natuurlijk vaak al gestart.... :-s

Dat maakt niet zoveel uit: dan maak je gewoon een knop, link of Ajax-aanroep die een script afvuurt op het moment dat je het aantal actieve sessies wilt weergeven.
 
Ozzie PHP

Ozzie PHP

17/06/2013 14:11:32
Quote Anchor link
Ah okeej...
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.