php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 07.10.2006, 13:31  
Neuer Benutzer
 
Registriert seit: 07.10.2006
Beiträge: 25
stani
Standard Sessions gehen nach einiger Zeit einfach verloren

Hallo,

ich habe einen Server bei 1und1. Mein Problem: Je länger ich auf dem Server in meiner Anwendung navigiere, um so wahrscheinlicher, dass meine Session plötzlich weg ist (es erscheint dann die von mir vorgesehene meldung für solche Fälle "Session abgelaufen ... "). Passiert ggf. erst nach 2 Stunden ununterbrochenen Surfens. Manchmal aber auch nach 5 Minuten.

Könnt Ihr Euch erklären, weshalb das passieren kann? Kann es an irgendwelchen php- oder Server-Einstellungen liegen oder ist es eher ein 1und1-Problem, dass die dort kurz mal aussetzen oder den Apache neu starten oder sowas?

Thanx
stani ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.10.2006, 18:46  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Ich wüsste dafür keine "Standard-Erklärung".

Zeig mal deine Session-Klasse und wie du sie bedienst (oder wia auch immer du sonst die Sitzungssteuerung implementiert hast).

Wechselt du vielleicht die Domain oder Subdomain oder hast die Session an einen bestimmten Pfad gebunden?

Basti
Basti ist offline  
Alt 07.10.2006, 21:05  
CIX88
Gast
 
Beiträge: n/a
Standard

Zitat:
oder ist es eher ein 1und1-Problem
Ist es nicht, dann wäre es mir auch schon aufgefallen, ist aber nicht so.
 
Alt 08.10.2006, 12:09  
Neuer Benutzer
 
Registriert seit: 08.10.2006
Beiträge: 3
Verion1
Verion1 eine Nachricht über ICQ schicken
Standard

Falls obige Angaben nicht zutreffen, versuchs noch hiermit (ist aufwendiger ):

Prüf mal alle deine Seiten, ob du wirklich überall session_start() benutzt !
Das ist zwar ärgerlich, aber es passiert schonmal.. das wäre ein Grund, warum die session plötzlich abgelaufen ist. (vielleicht in einem Fenster, dass nicht auf die index.php verlinkt sondern nur auf eine ander .php page? )

greets Verion
__________________
.:: Just For Fun ::.
Verion1 ist offline  
Alt 08.10.2006, 16:48  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

...na, wenn das wirklich nötig ist, dann würd ich mich mal schnell ans Umschreiben machen. *g

http://www.martinfowler.com/eaaCatal...ontroller.html
http://www.phpwact.org/pattern/front_controller
http://java.sun.com/blueprints/corej...ontroller.html

Oder ganz "niederschwellig":
http://www.sitepoint.com/forums/showthread.php?t=310760

Basti
Basti ist offline  
Alt 08.10.2006, 17:19  
Neuer Benutzer
 
Registriert seit: 07.10.2006
Beiträge: 25
stani
Standard

@ CIX88: Du bist also auch dort und hast damit so keine Probleme?! Ok, welche Einstellungen können so etwas überhaupt verursachen? Ich habe in dem Bereich die folgenden Settings

Code:
session.auto_start = 1
session.cookie_lifetime = 0
session.gc_maxlifetime = 10800
session.gc_probability = 1
session.cache_expire = 180
session.save_handler = files
session.use_cookies = 1
@ Verion1 und Basti: Diese Möglichkeit fällt gänzlich weg, da ich ja sessions automatisch starte (s.o. Einstellungen). Dein zweiter Vorschlag fällt ebenfalls aus, da der Effekt nicht immer auf einer bestimmten Seite auftaucht sondern plötzlich mittendrin, wo es normalerweise funktioniert. Damit scheidet auch der Vorschlag von Basti aus.

Wie sieht das Handling aus? Ich versuche es mal zu vereinfachen.

Auf der ersten Seite wird eine Sessionvariable gesetzt, sagen wir $_SESSION['user_id'] = nnn. Auf allen folgenden Seiten wird abgefragt, ob $_SESSION['user_id'] gesetzt ist. Falls nicht => Sitzungsverlust.

Durch das autostart ist das Sessionobjekt immer vorhanden. Dadurch das der Verlust auf unterschiedlichen Seiten passiert ist auch ein simpler Programmierfehler auszuschließen (z.B. ein Redirect ohne SessionID).

--- Pendeln ---

Ich sage Euch, wo das u.a. passiert. Es ist ein gutes Beispiel, weil es viele Fehlerquellen ausschließt.

Um Newsletter zu versenden (ca. 10.000-20.000 Stück) wird ein Skript gestartet. Dieses läuft 2 Stunden und mehr. Damit das Skript nicht an Limits stößt (z.B. execution time des Servers etc., obwohl mit 90 Minuten sehr hoch gestellt, php execution time wird auch für das Skript ini_set('max_execution_time', 6000) temporär hoch gesetzt) läuft es nicht am Stück, sondern versendet jeweils 100 Newsletter, kehrt zum Browser zurück, zeigt den aktuellen Stand an und ruft das Skript dann automatisch noch einmal auf (mittels META-Refresh), um die nächsten 100 zu versenden. Ich nenne das Pendeln. So weit klappt das. Damit liegt die Ausführungszeit stets im Minutenbereich und ist völlig unkritisch. Nach x Tausend Stück ruft der Browser die nächsten 100 auf und erhält Session abgelaufen.

Nun stehe ich da und kann mir das überhaupt nicht erklären. Und dann sagt der Kunde, das passiert manchmal und manchmal läuft es eben auch für 20.000 Aussendungen durch.

Also, wenn das nicht an 1und1 liegt... was kann es denn sonst sein?
stani ist offline  
Alt 08.10.2006, 18:03  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Mein Ansatz wäre jetzt, erstmal versuchen herauszufinden, ob die Session-Datei flöten geht, das Cookie vielleicht, oder ob die Sitzungssteuerung sagt, dass jetzt Schluß ist, obwohl beides vorhenden ist.

Ich hab allerings auch grad keinen einfachen ansatz dazu, das du ja session.auto_start benutzt und somit vor dem Start der Session nichts tun kannst.

Wo speicherst du die Sessions denn? Auf Shared Hosts wird ja in der Regel ein gemeinsames Verzeichnis (/tmp) für alle Kunden benutzt, wobei mitunter die PHP-Instanzen der Kunden nicht mit eigener UID laufen (z.B. bei PHP als mod_php). In dem Fall müsstest du die Sessions eh in deinem Webspace speichern, da ja sonst alle anderen Kunden auf dem Server auf deine Session-Dateien zugreifen können. Dort wäre also für mich mal der erste Ansatzpunkt, nach einer Fehlerquelle zu suchen.

Basti
Basti ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abbruch nach einiger Zeit.... dh1sbg PHP-Fortgeschrittene 3 08.07.2008 12:48
SWiki, weil einfach einfach einfach ist. b++ Beitragsarchiv 0 06.10.2007 19:07
Seit einiger Zeit Probleme mit unserem Forum/Uploads Daskaras PHP Tipps 2005-2 2 21.08.2005 22:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
1und1 session abgelaufen, 1und1 sitzung abgelaufen, 1&1 sitzung abgelaufen, session ist abgelaufen 1und1, 1und1 webmailer ihre sitzung ist abgelaufen, ihre sitzung ist abgelaufen. melden sie sich neu an. 1und1, 1und1 ihre sitzung ist abgelaufen, 1&1 webmailer sitzung abgelaufen, 1und1 session, 1&1 sitzung ist abgelaufen, 1&1 ihre sitzung ist abgelaufen. melden sie sich neu an., ihre sitzung ist abgelaufen. melden sie sich neu an., \ihre sitzung ist abgelaufen. melden sie sich neu an\, 1&1 email sitzung abgelaufen, 1und1 ihre sitzung ist abgelaufen bitte melden sie sich neu an, 1&1 webmailer session abgelaufen, 1und1 webmailer ihre sitzung ist abgelaufen. melden sie sich neu an., 1und1 webmailer sitzung abgelaufen, 1und1 webmail sitzung abgelaufen, sitzung abgelaufen apache

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:15 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.