ToBiOh: Include nach session_start führt manchmal zu timeout

Hallo,
auf meiner Index-Php Seite starte ich eine session mit session_start und rufe anschließend einige Dateien mit include auf. Das sieht folgendermaßen aus:

<?php  
include "servervars.php";  
include "database.php";  
include "includes/escapestrings.php";  
  
session_start();  
include "includes/logcheck.php";  
  
if ((!isset($_SESSION['esg_staylog'])) || ($_SESSION['esg_staylog'] != '1')) {  
setcookie('PHPSESSID', session_id(), '0', '/', '.elderscrolls-games.de');  
}  
else {  
setcookie('PHPSESSID', session_id(), time()+604800, '/', '.elderscrolls-games.de');  
}  
  
include "includes/language.php";  
include "lang/main_0".$language.".php";  
include "includes/error.php";  
include "includes/timezone.php";  
include "includes/date.php";  
  
include "includes/module.php";  
include "includes/webthumb.php";  
include "includes/forum.php";  
include "includes/page_rem.php";  
include "includes/page.php";  
  
ob_start();  
  
include_once "modules/".$folder_path."/".$file_path.".php";  
$page_content = ob_get_contents();  
ob_end_clean();  
include "template/theme.php";  
?>

Doch nun erhalte ich, nicht immer, aber gelegentlich folgende Fehlermeldung:

Fatal error: Maximum execution time of 30 seconds exceeded in C:..\index.php on line 7

Zeile 7 ist die erste Zeile nach dem session_start. Nachdem ich diese Fehlermeldung schon öfter mal hatte (aber nicht bei jedem Seitenaufruf sondern nur etwa bei jedem 50.) habe ich entschlossen mal vor der Logcheck Datei eine andere zu includieren. Witziger Weise mit dem gleichen Resultat - es ist wieder nur das include, das direkt nach session_start kommt betroffen, egal welche Seite das ist. Interessant ist auch die Tatsache, dass die Seite, wenn dieser Fehler vorkommt einfach diese 30 Sekunden bis zum Timeout lädt und ich dann aber keinen Zugriff auf die Seite habe. Jedoch scheinbar nur mit dieser Session, da ich mit einem anderen Browser noch drauf komme.

Vielleicht weiß jemand von euch Rat? Grundsätzlich ist Problem zwar nicht so gravierend, aber wenn man ca. alle 50 Seitenaufrufe erstmal 30 Sekunden warten muss, dann ist das für einen als User (oder auch Admin :D ) doch sehr nervig.

grüße und vielen Dank im Voraus
Tobias

  1. Hallo,
    Mit welchem Browser schaust Du dir deine Seite denn an?
    Falls es der FF ist, kann es daran liegen, dass er manchmal einfach keine Seite lädt oder nur eine weiße Seite anzeigt.
    Zumindest lädt er bei mir manchmal einfach keine Seite...
    Wie das dann aussieht, wenn Du eine Session startest & der Browser nicht weiter lädt weiß ich nicht...
    lg

    1. Hallo,
      am Browser liegt es wahrscheinlich nicht. Ich erhalte ja von PHP die Meldung. Außerdem habe ich sie auch schon in anderen Browsern erhalten.

  2. Hello,

    was m,ir spoantan in den Sinn kam war, dass Du eventuell die Session mehrfach startest.
    Aber meine aktuelle Arbeitsplatzversion von PHP (5.2.2) erkennt das und liefert dann nur eine Fehlermeldung, dass der zweite Startversuch ignoriert wird.

    Könnte jetzt nur sein, dass ältere Versionen das noch nicht erkennen und hier auf ein Lock laufen. Das Dürfte zwar eigentlich auch nicht sein, da das weitere Lock vom selben Prozess angefordert werden müsste, aber wissen kann mans nicht, ohne nachgeschaut zu haben...

    Wird Dir also vermutlich nicht weiterhelfen der Gedanke.

    Liebe Grüße aus Syburg bei Dortmund

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hmm, also ich habe Version 5.2.6. Mein ganzes CMS läuft eigentlich über diese Index.php. Dh. auf jeder Seite wird wieder das Session_start neu aufgerufen, wobei hier dann aber ja automatisch die alte Session (Cookie) wieder aufgenommen werden sollte. Oder ist das ein Problem? Sorry bin noch nicht so fachkundig. ;)

      grüße

      1. Hello,

        Hmm, also ich habe Version 5.2.6. Mein ganzes CMS läuft eigentlich über diese Index.php. Dh. auf jeder Seite wird wieder das Session_start neu aufgerufen, wobei hier dann aber ja automatisch die alte Session (Cookie) wieder aufgenommen werden sollte. Oder ist das ein Problem?

        Auf jeder Seite musst Du die Session schon wieder aufnehmen, wenn Seite "Antwort auf den Request" bedeutet. Aber nicht in jedem Include. Das war mein erster Gedanke.

        Aber wenn Du in jedem Include die Session gestartet hättest, würdest Du eine Warnung bekommen und keine Verzögerung bis zum Timeout.

        Das wird es also nicht sein.

        Liebe Grüße aus Syburg bei Dortmund

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
  3. Hello,

    wie könnte man da jetzt vorgehen?
    Ich würde Kontrollausgaben (mit    "marke: " . date('Y-m-d H:i:s') )in die Teilscripte (includes) setzen, die in einer (Log-)Datei landen. Dann könnte man nach dem Timeout sofort in diese Logdatei schauen und sehen, bei welchem Teil des Scriptes die Kontrollausgaben ins Stocken geraten.

    Liebe Grüße aus Syburg bei Dortmund

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  4. Hat noch jemand eine Idee?

    1. Hello,

      Hat noch jemand eine Idee?

      Du könntest eine menge Ideen bekommen, wenn Du ein paar Debug-Ergebnisse liefern würdest.
      Ich hatte Dir doch eine Fahrplanidee dafür geschrieben. Das mag nicht optimal seon fürs Debugging, da aber niemand anderes etwas geschrieben hat dazu, wird es wohl in die richtige Richtung führen.

      Probiere es also einfach mal aus, eine Logdatei zu schreiben mit den Timestamps und den Include-Namen.

      Liebe Grüße aus Syburg bei Dortmund

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
    2. Hello,

      Hat noch jemand eine Idee?

      Die einfachste Lösung wäre sicherlich, dass irgend eines deiner Includes eine Endlosschleife startet.
      Dazu müsste Du dann nur die Fehlermeldung genau lesen, denn die sagt Dir, in welchem include der Bock sitzt.

      Liebe Grüße aus Syburg bei Dortmund

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de