Ergebnis 1 bis 10 von 10
  1. #1
    bermany ist offline Eroberer
    registriert
    30-10-2006
    Ort
    Berlin
    Beiträge
    67

    Probleme mit Cache?

    Hallo Forum,

    diese Funktionen laufen auf diversen Servern problemlos.
    Mit einem Ubuntu-Server habe ich jedoch Probleme:

    PHP-Code:
    function readses($id) {
      // load session-file
      global $app;
      $fn='session/'.$id.'.ses';
      if (file_exists($fn)) {include($fn);}
    }

    function writeses($id) {
      // write session-file
      global $app;
      $fn='session/'.$id.'.ses';
      file_put_contents ( $fn , '<?php $app=' .var_export($app,true ).'?>');
    }
    Da Benutzer ihre Rechte "verlieren" und erst nach erneutem Login wieder erhalten, schaute ich mir die Funktionen an und ließ ein Protokoll erstellen.
    Das Protokoll wurde in beiden Funktionen hinterlegt, die Ausgabe erfolgte mittels fopen('...','a') in die selbe Datei, es ist also absolut chronologisch.

    Hier ein Auszug:

    Code:
    Dateiname                       Zeitpunkt          r/w  Wert
    
    === SEITENAUFRUF / INITIALISIERUNG ===
    
    session/gnsebmifabax.ses  |  2016-05-18 17:49:26 w    0     // HIER WIRD U.A. DER WERT "0" GESCHRIEBEN
    
    session/gnsebmifabax.ses  |  2016-05-18 17:49:27 r    0     // ... UND GELESEN
    
    session/gnsebmifabax.ses  |  2016-05-18 17:49:34 r    0     // ... UND NOCHMAL
    
    
    === LOGIN ===
    
    session/gnsebmifabax.ses  |  2016-05-18 17:49:34 w    1      // HIER WIRD DER WERT "1" GESCHRIEBEN
    
    
    === START EINES MODULS ===
    
    
    session/gnsebmifabax.ses  |  2016-05-18 17:49:34 r    0      // HIER WIRD AUS DER SELBEN DATEI DER WERT "0" GELESEN ???
    
    
    === START EINES ANDEREN MODULS ===
    
    session/gnsebmifabax.ses  |  2016-05-18 17:49:34 r    0      // HIER NOCH EINMAL
    
    
    === START EINES DRITTEN MODULS ===
    
    session/gnsebmifabax.ses  |  2016-05-18 17:49:41 r    1      // AB HIER WIRD PLÖTZLICH "1" GELESEN, WARUM VORHER NICHT ?
    Hat dafür jemand eine Erklärung?
    Computer rechnen schneller als wir, deshalb machen sie auch mehr Fehler

  2. #2
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.666

    AW: Probleme mit Cache?

    die 3 operationen erfolgen zur gleichen zeit(laut logfile), io-operationen werden aber immer serialisiert
    also lesen die 2 zuerst aber beim rausschreiben ist der prozess zuerst drann, der schreibt
    schreib mal eine semaphore um readses + write to file und writeses + write to file dann siehst du die richtige reihenfolge im file
    Geändert von tsseh (18-05-2016 um 20:27 Uhr)

  3. #3
    bermany ist offline Eroberer
    registriert
    30-10-2006
    Ort
    Berlin
    Beiträge
    67

    AW: Probleme mit Cache?

    Hi,

    das kann ich mir eigentlich nicht vorstellen. Die identische Zeit entsteht ja nur durch die hohe Rechengeschwindigkeit.
    Tatsache ist, dass in der selben Sekunde sogar eine Server-Antwort und eine automatisierte Neuanfrage liegt.
    Daher der Eintrag im Protokoll "START EINES MODULS"
    Der anschließende Protokolleintrag erfolgte also garantiert danach.
    Dazu muss ich sagen, dass das Protokoll hier gekürzt wurde. Ausgegeben wurde auch der Modulname.
    Da das zu startende Modul aber erst nach dem Login erfolgen kann, ist ein Irrtum ausgeschlossen.
    Computer rechnen schneller als wir, deshalb machen sie auch mehr Fehler

  4. #4
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.666

    AW: Probleme mit Cache?

    Zitat Zitat von bermany Beitrag anzeigen
    Daher der Eintrag im Protokoll "START EINES MODULS"
    Der anschließende Protokolleintrag erfolgte also garantiert danach.
    ok, dann ist es das nicht
    hast du mal den read/write file cache abgeschaltet? du wirst vermutlich recht haben, dass der read und der write cache der sessiondatei dann nicht synchron ist

  5. #5
    bermany ist offline Eroberer
    registriert
    30-10-2006
    Ort
    Berlin
    Beiträge
    67

    AW: Probleme mit Cache?

    Ich habe nun einen Work-Around gefunden, wobei mir nicht klar ist, warum er eigentlich einer ist.
    Anstelle das Script auszugeben und mit include zu importieren nutze ich json:

    PHP-Code:
      // Einlesen
      
    $app json_decode file_get_contents $fn ) ,true ) ;

      
    // Ausgeben
      
    file_put_contents $fn json_encode $app ) ) ; 
    Nach unzähligen Tests nicht ein Patzer.
    Nun lautet die spannende Frage: Warum?
    Computer rechnen schneller als wir, deshalb machen sie auch mehr Fehler

  6. #6
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.666

    AW: Probleme mit Cache?

    Zitat Zitat von bermany Beitrag anzeigen
    Nun lautet die spannende Frage: Warum?
    das wird dir keiner sagen können, da nicht mal klar ist, was das mit deinem problem, sessiondaten auszulesen, zu tun haben soll.
    da wirst du mehr als 3 zeilen code und eine bessere beschreibung liefern müssen

  7. #7
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.695

    AW: Probleme mit Cache?

    Das du mal die PHP-Konfigurationen zwischen den Servern verglichen? Dass du mit include eine Zeit lang die alte Version bekommst und mit file_get_contents nicht, klingt für mich irgendwie nach einem PHP-Optimierer, der eine "kompilierte" Version des Codes irgendwo zwischenspeichert.

  8. #8
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.666

    AW: Probleme mit Cache?

    ach, jetzt hab ich mir das mal genauer angesehen, es geht ja überhaupt nicht um sessiondaten, sondern um ein file in das du eine globale variable schreibst.
    vielleicht ist das schon das problem, aber trotzdem, bei den 3 zeilen wird keiner was genaues sagen können

    - - - Aktualisiert - - -

    setz mal LOCK_EX beim schreiben und vor dem lesen auch mit flock

  9. #9
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.695

    AW: Probleme mit Cache?

    Wenn es ein Problem auf Dateisystemebene ist, sollte es doch auch bei dem Ansatz mit JSON auftreten, oder?

  10. #10
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.666

    AW: Probleme mit Cache?

    Zitat Zitat von kkapsner Beitrag anzeigen
    Wenn es ein Problem auf Dateisystemebene ist, sollte es doch auch bei dem Ansatz mit JSON auftreten, oder?
    das umwandeln in JSON dauert aber wieder ein paar ms, keine ahnung wie groß die variable ist
    sonst bleibt fast nur noch dass die globale variable überschrieben wird, da spricht aber dagegen, daß es nur auf einem system auftritt

Ähnliche Themen

  1. Proxy, Cache, 1&1 und Co.
    Von mikdoe im Forum Serverseitige Programmierung
    Antworten: 6
    Letzter Beitrag: 03-03-2011, 21:25
  2. Probleme mit Cache
    Von bweichel im Forum JavaScript
    Antworten: 8
    Letzter Beitrag: 10-03-2009, 14:35
  3. cache
    Von herbert im Forum Allgemeines
    Antworten: 1
    Letzter Beitrag: 24-04-2002, 21:56
  4. Cache
    Von xxoes im Forum Allgemeines
    Antworten: 3
    Letzter Beitrag: 29-05-2001, 17:06
  5. Pix in den Cache?
    Von sonicproductionz im Forum Allgemeines
    Antworten: 0
    Letzter Beitrag: 12-03-2001, 09:01

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •