2016-03-29 5 views
1

gc_maxlifetime ist bereits auf 24 Minuten eingestellt, aber wenn jede Anwendung eine andere sess_expiration hat. Einer von ihnen ist auf 9000 Sekunden (2 1/2 Stunden) eingestellt. Die App ist basierend auf gc_maxlifetime nicht sess_expiration abgelaufen. Warum das? Wie kann die sess_expiration funktionieren, wenn sie länger als gc_maxlifetime ist?Warum gc_maxlifetime gewinnt über sess_expiration?

+0

Überprüfen Sie [offizielle Dokumentation und Kommentare unten] (http://php.net/manual/en/session.configuration.php), wie Sie es einstellen. – Tpojka

Antwort

0

von hier Lesen: why ini_set('session.gc_maxlifetime',60) doesn't work? und hier: https://www.dev-metal.com/how-the-php-session-garbage-collector-really-works/

Da Garbage Collector startet (falls beginnt), bevor Sitzung

Ich denke, dass die gc_maxlifetime Feuer vor Ihrer CI Session-Handler und für diese es 'Gewinnt'.

Für Ihre php.ini Datei zu ändern, nicht gezwungen zu sein, könnten Sie versuchen, es zu setzen, bevor jeder session_start:

ini_set("session.cookie_lifetime","7200"); 
ini_set("session.gc_maxlifetime","7200"); 
session_start(); 

oder in der .htaccess-Datei:

php_value session.gc_maxlifetime 7200 
php_value session.cookie_lifetime 7200 

Sie mehr hier lesen konnte : Codeigniter increase session time out not working

Hoffe es hilft!

+0

GC wird nach der Sitzungsinitialisierung ausgeführt und beide dieser INIs werden von CodeIgniter überschrieben. – Narf

0

Nicht wirklich so einfach, wie Sie es nennen haben ...

Es ist wahr, dass gc_maxlifetime ist was passiert, wenn eine Sitzung oder nicht gelöscht bestimmt werden soll, denn das effektiv das „Server-Side-Timer“ ist das gilt für das Löschen einer Sitzung - auch auf der Client-Seite, da dort Cookies gespeichert sind.
Allerdings setzt CodeIgniter gc_maxlifetime auf den gleichen Wert wie sess_expiration, , es sei denn, es ist 0 (in diesem Fall verwendet es Ihren Wert php.ini).

Aber etwas anderes in Ihrer Frage kann wichtig sein:

aber, wenn jede Anwendung eine andere sess_expiration hat. Einer von ihnen wird bis 9000 Sekunden (2 1/2 Stunden)

Wenn Sie mit auf dem gleichen sess_save_path, sess_cookie_name, sess_match_ip auf dem gleichen Server, aber für mehrere Anwendungen ... dann der Anwendung mit dem niedrigsten sess_expiration Der Wert wird zu einem bestimmten Zeitpunkt Sitzungen löschen, die für andere noch gültig sein sollen.

TL; DR: Verwenden Sie nicht die gleiche Sitzung "Space" für separate Anwendungen.

Verwandte Themen