Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] session-Zugriff benötigt zwei Sekunden

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] session-Zugriff benötigt zwei Sekunden

    Hallo,

    ich habe ein merkwürdiges Problem mit meinen Sessions in meinem Projekt...

    Folgende Funktion ist für die Session zuständig:
    PHP-Code:
    public function session() {
        
    timemachine($x);
        
    $args func_get_args();

        switch (
    count($args)) {
            case 
    0:
                if (
    session_id() === "") {
                    
    session_name($this->_sessionName);
                    
    session_start();
                }
                
    timemachine($x);
                return 
    $_SESSION;
            case 
    1:
                
    $this->session();
                if (isset(
    $_SESSION)) if (isset($_SESSION[$args[0]])) return $_SESSION[$args[0]]; 
                                else { 
                                    
    timemachine($x);
                                    return 
    null;
                                }
            case 
    2:
                
    $this->session();
                if (
    $args[0] === null)
                    if (
    $this->session($args [1]) !== null) unset($_SESSION[$args[1]]);
                else 
    $_SESSION[$args[0]] = $args[1];
        }
        
    timemachine($x);

    Erklärung:
    Keine Parameter: Sesion wird entweder gestartet oder - sofern schon geschehen vie $_SESSION zurück gegeben.
    Ein Parameter: $_SESSION[parameter] wird zurück gegeben
    Zwei Parameter: $_SESSION[param1] wird auf wert param2 gesetzt
    Erster Parameter 'null' - Kommt einen unset gleich (Key ist dann param2)

    Ich habe mir diese Funktion geschrieben, weil ich die PHP-Variablen nicht im Code nutzen möchte (Finde das umständlich wegen Groß schreiben und so)

    Die "timemachine"-Aufrufe halten lediglich die Aufruf-Zeiten einer Funktion fest - die habe ich in einigen Methoden drinne.

    Von diesem Timemachine wird mir ganz am Ende ein Log erstellt, wo ich alle Aufrufe der Reihe nach sehe und genau zurückverfolgen kann - dazu auch die Zeit die diese Methode für sich beansprucht hat.

    Nun dauert dies bei dieser Methode aber jedes mal ein bis zwei Sekunden wie ich im Log gesehen habe.

    Code:
                             Start with in_8, needs 1.3019 Seconds at 08.07.14 19:43:54
                             ZousaApp - session - Line 137 in /dev/core/zousaApp.php
                             No Args
    Hier wurde die Funktion ohne Parameter aufgerufen, also folgender Code nur ausgeführt:

    PHP-Code:
    if (session_id() === "") {
        
    session_name($this->_sessionName);
        
    session_start();
    }
    timemachine($x);
    return 
    $_SESSION
    Warum dauert soetwas so lange?
    Die Session-File ist leer.


    LG
    Kagu


  • #2
    Woher kommt und was macht timemachine()?
    Der darin übergebene Wert $x ist ja noch gar nicht definiert in dem Scope!

    btw. ich pers. würde eher zu getter/setter tendieren, bevor ich die Transparenz durch Verwendung von func_get_args() etc. mit Füssen trete...
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Zitat von Arne Drews Beitrag anzeigen
      Woher kommt und was macht timemachine()?
      .. und wie lange braucht ein Aufruf von timemachine() selbst? Schreibt die Funktion in eine Datei?

      Dann noch Zeitstempel vor session_name, session_start und nach session_start in dem verdächtigen Abschnitt setzen.
      PHP-Klassen auf github

      Kommentar


      • #4
        Die "timemachine"-Aufrufe halten lediglich die Aufruf-Zeiten einer Funktion fest - die habe ich in einigen Methoden drinne.
        In der Funktion wird nur ein Zeitstempel festgehalten - das passiert etwa 150 mal im gesamten Code bisher und trägt hir nicht zu der langen Wartezeit bei (~~ 0,0001 Sekunden)

        Die Zeitstempel werde ich mal setzen zum testen wenn ich daheim bin

        Kommentar


        • #5
          Ja und $x ist ne globale oder wie oder was?!
          Der darin übergebene Wert $x ist ja noch gar nicht definiert in dem Scope!
          Competence-Center -> Enjoy the Informatrix
          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

          Kommentar


          • #6
            PerReference Variable - wird mit dem Aufruf definiert.

            PHP-Code:
            function timemachine(&$id$backtrace=null) {/* ... */ 

            Kommentar

            Lädt...
            X