CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
13.10.2005, 00:53:09
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 50
|
|
Session Variablen / Session lifetime
morsche,
isch hab ein Problem:
Ziel ist es, bestimmte userspezifische Daten über einen Zeitraum von 90 Tagen zu speichern (History von Suchanfragen). Mittels session_set_cookie_params() habe ich entsprechend die Lebenszeit der Session-Cookies auf 60*60*24*90 gesetzt.
Soweit so gut. Im Prinzip funktioniert alles - die Variablen werden zunächst gespeichert und wie gewünscht ausgegeben, aber nach einem mir noch unbekannten Zeitraum (definitiv weniger als 90, eher ein paar Tage) sind die Variablen futsch und ich weiß nicht, warum.
Anhand dessen, was ich bisher gelesen habe, dürfte es auch nicht an der standardmäßig auf 180 Min. eingestellten session_cache_expire()-Zeit liegen.
Ich habe früher ausschließelich mit Perl und nicht sonderlich viel mit Sessions gearbeitet und wenn, dann auf eine andere Weise. Ich habe es mir mittlerweile nach vielem Hin und Her angewöhnt, die Sessions nicht in der Datenbank abzulegen, sondern einfach die Variablen in der Session zu speichern und dann direkt abzufragen. Wenn es daran liegt, also dass ich die Variablen besser in der Datenbank speichern sollte, sagt es mir :).
Es würde mich interessieren, ob es generell sinnvoller ist, die Variablen in der Datenbank zu speichern und mittels der SessionID darauf zurückzugreifen - dies erschien mir nämlich bisher immer etwas zu aufwendig, falls die zu speichernden Daten nicht weiter relevant sind und auch nicht aufbewahrt werden müssen (außer für den Anwender).
Also, lange Rede, kurzer Sinn - hat jemand eine Idee?
thx und Grüße
|
13.10.2005, 05:36:59
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: Session Variablen / Session lifetime
Zitat:
Zitat von morsche
Ziel ist es, bestimmte userspezifische Daten über einen Zeitraum von 90 Tagen zu speichern (History von Suchanfragen). Mittels session_set_cookie_params() habe ich entsprechend die Lebenszeit der Session-Cookies auf 60*60*24*90 gesetzt.
Soweit so gut. Im Prinzip funktioniert alles - die Variablen werden zunächst gespeichert und wie gewünscht ausgegeben, aber nach einem mir noch unbekannten Zeitraum (definitiv weniger als 90, eher ein paar Tage) sind die Variablen futsch und ich weiß nicht, warum.
|
session.gc_maxlifetime möchte auch so lange leben wie der Session-Keks.
Zitat:
Ich habe es mir mittlerweile nach vielem Hin und Her angewöhnt, die Sessions nicht in der Datenbank abzulegen, sondern einfach die Variablen in der Session zu speichern und dann direkt abzufragen. Wenn es daran liegt, also dass ich die Variablen besser in der Datenbank speichern sollte, sagt es mir :).
|
Du solltest mal daran denken:
session_set_save_handler -- Setzt benutzerdefinierte Session-Speicherfunktionen
Im Handbuch findest Du in den Userkommentaren Beispiele, wie man die Session anstelle in einem Sessionfile in einer Datenbank speichern kann. Beachte dabei ebenfalls die Userkommentare zu serialize(), damit Du mit der neu zu schreibenden Funktion write() den Inhalt von $_SESSION unabhängig vom Inhalt komplett und ohne Stringfehler in die Datenbank schreibst und zurücklesen kannst.
Bevor Du fragst: es funktioniert bestens.
|
13.10.2005, 14:04:06
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 50
|
|
AW: Session Variablen / Session lifetime
Hört sich vielversprechend an, aber bevor ich mir damit Arbeit mache, versuche ich es erstmal mit session.gc_maxlifetime. Denn die Grundfunktionalität ist ja gegeben und wenn es über einen Zeitraum von ein paar Stunden oder paar Tagen gespeichert werden kann, dann dürfte eine Erweiterung auf 90 Tage wohl auch kein Problem sein.
Falls es nicht klappt, versuche ichs mal mit session_set_save_handler. Aber wenn ich nicht muss, möchte ich es auch nicht in der DB speichern.
|
14.10.2005, 13:47:12
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 50
|
|
AW: Session Variablen / Session lifetime
leider funktioniert es nicht, wie ich es bisher probiert habe:
PHP-Code:
$expireTime = 60*60*24*50;
ini_set('session.use_cookies', true);
ini_set('session.gc_maxlifetime', time() + $expireTime);
ini_set('session.cookie_lifetime', time() + $expireTime);
ini_set('session.serialize_handler', 'php');
ini_set('session.gc_probability', 1);
session_set_cookie_params($expireTime);
session_start();
(hab's vorher ohne time() versucht, wie ich es eigentlich für richtig hielt. Dann habe ich es aber so gefunden und direkt übernommen. Da es aber bei session_set_cookie_params() auch nur ohne time() geht, könnte es ja sein, dass es bei dem entsprechenden ini_set Befehl auch nicht funktioniert.)
Ich frage mich, wieso sich keine Änderung bemerkbar macht - müsste doch eigentlich funktionieren, oder?
Ich würde wie gesagt gerne die DB Lösung umgehen. Gibt es noch andere Lösungsansätze oder Fehlerquellen, die ich beachten muss?
THX
Geändert von morsche (14.10.2005 um 13:48:51 Uhr)
|
14.10.2005, 15:45:38
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
AW: Session Variablen / Session lifetime
Zitat:
Zitat von morsche
Ich frage mich, wieso sich keine Änderung bemerkbar macht - müsste doch eigentlich funktionieren, oder?
|
Ich kenne mein phpinfo aber nicht Deins.
bei ini_set() solltest Du prüfen, ob PHP die Änderungen überhaupt übernommen hat. Fehlermeldungen, wenn ggf. der safe_mode was dagegen hat oder im virtualhost per php_admin_* Variablen durch den Provider zwingend gesetzt werden, werden bei ini_set() nicht angemeckert.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 18:51:05 Uhr.
|