2 Scripte blockieren sich gegenseitig?

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

  • 2 Scripte blockieren sich gegenseitig?

    Hallo!

    Folgende Konstruktion:

    Frame 1: Script was einen Datenbankeintrag aktualisiert und sich per HTMl-Refresh alle 2 Sekunden neu lädt.

    Frame 2: Script was den Datenbankeintrag abruft und prüft wieviel Zeit zwischen dem Eintrag und JETZT liegt. Ist es zuviel, beendet sich das Script in Frame 2. Wenn nicht, prüft es weiter (Schleife)

    Problem nun folgendes, bzw folgendes Verhalten:

    Beide Scripte starten. Script in Frame 1 bleibt hängen, das seh ich an der Ausgabe der aktuellen Sekunden. Frame 2 wartet eine Weile und stellt dann fest, dass die Zeit vom letzten Eintrag zu lang her ist. (logisch, Script 1 hängt ja).
    Script 2 beendet sich dann wie geplant und nun fängt bei Script 1 der HTML-Refresh an zu arbeiten.

    Meine Frage: Woran liegt es, dass diese Dateien nicht synchron laufen? Mir kommt es vor als würden sie sich gegenseitig kurze Zeit blockieren. Script 2 stirbt und Script 1 läuft dann weiter.
    Ist es möglich, dass sich die Script über die MySQL-Abfragen blockieren? Wenn ja, wie verhindert man das am besten?

  • #2
    Re: 2 Scripte blockieren sich gegenseitig?

    file-based Sessions?

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      In dem Script verwende ich Sessions falls du das meinst.
      Was man unter file-based sessions verstehen soll müsstest du mir zeigen.

      Ich google derweile weiter, vllt finde ich dahingehend schon eine Lösung.

      Kommentar


      • #4
        Original geschrieben von Gpunkt
        In dem Script verwende ich Sessions falls du das meinst.
        Was man unter file-based sessions verstehen soll müsstest du mir zeigen.

        Ich google derweile weiter, vllt finde ich dahingehend schon eine Lösung.
        file-based heißt in diesem Falle standard-Session-Handler

        Du hast recht, deine Skripte blockieren sich gegenseitig. Beim Aufruf von session_start() lockt der default-session-Handler von PHP die Datei, in der die Daten der Session gespeichert sind. Der Lock wird aufgehoben, sobald die Session geschlossen wird (Ende vom Skript, oder session_write_close()), da es ein exklusiver Lock ist, kann solange kein anderes Skript was ein session_start() beinhaltet fortfahren, sondern wartet beim session_start() auf die Freigabe der Session-Datei

        Du kannst das Problem durch einen eigenen session-Handler auf DB-Basis umgehen ... oder halt session_write_close() verwenden sobald du weißt, dass keine Daten der Session mehr geändert werden

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar

        Lädt...
        X