Is een sessie nog actief ?
(het betreffende session_id heb ik in een tabel bewaard)
Gewijzigd op 16/06/2013 23:37:32 door Paco de Wulp
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.
@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?
Ozzie, ja.
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.
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.
Misschien wel of deze nog actief is (in het geheugen nog aanwezig is of niet ?).
Nee, dat staat er niet in. Alleen de info die jij erin zet.
session_status() gebruiken.
Als je PHP 5.4 draait kun je 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.
session_save_path() sessiebestanden tellen.
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 @Ward: hoe kun je de garbage collector handmatig aan het werk zetten?
Het enige wat ik kan vinden is dit.
session.gc_probability / session.gc_divisor
Dus bij 100 / 100 of 1 / 1 is de kans 1.0 = 100%.
Code (php)
1
2
3
4
5
6
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();
?>
// In een admin- of backoffice-script
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 1);
session_start();
?>
Ah oke... via ini_set. Echter, als je in de back-office zit is je sessie natuurlijk vaak al gestart.... :-s
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.
Ah okeej...