Code: Select all
while($lastTime == $_SESSION['lastTime']){
sleep(10);
}
Aber es funktioniert nicht! Die Schleife wird niemals enden, da das PHP-Skript keine neuen Daten empfangen kann, solange sich das Skript in der while-Schleife befindet. Und deshalb wird SESSION['lastTime'] nicht aktualisiert!
Ich dachte, dass mehrere Kopien desselben Skripts ausgeführt werden können. Aber das scheint nicht der Fall zu sein! Gibt es eine andere Möglichkeit, die Verbindung zum Server aufrechtzuerhalten? Tut mir leid, wenn das eine einfache Frage ist, aber mir fehlt das nötige Verständnis.
Wenn nur eine Kopie gleichzeitig laufen kann, wie kann der Server dann mehrere Verbindungen halten?
Bearbeiten 04.12.2025
Ich habe ein PHP-Skript, das zwei Funktionen hat. Zuerst werden Daten empfangen und in einer Datenbank gespeichert. Bereiten Sie außerdem ein Datenpaket für SSE ($_SESSION['sse']) und ein neues Datum für das Datenpaket ($_SESSION['lastTime']) vor.
Ich habe es mit einem Client getestet und festgestellt, dass ich einen Fehler gemacht habe. Wenn keine neuen Daten verfügbar sind, muss ich die Client-Verbindung offen halten. Und ich habe es geschafft, indem ich eine While-Schleife ausgeführt habe, bis sich die letzte Zeit geändert hat!
Die Client-Seite funktioniert gut, aber ich habe Probleme zu verstehen, wie ich die Client-Verbindung offen halten kann.
Ich habe herausgefunden, dass das PHP-Skript die Daten nicht akzeptiert, die etwa alle 3 Minuten an das Skript gesendet werden, wenn ich es mit einer While-Schleife mache. Daher wird SESSION['lastTime'] nicht aktualisiert und das Skript kann die Schleife nicht verlassen! Ich kann es überprüfen, da die Werte in der Datenbank vom Skript nicht aktualisiert werden.
Ich verstehe nicht, warum keine weitere Kopie des Skripts geöffnet wird! Was ist der Grund dafür?
Was muss ich ändern, dass der Server gleichzeitig offene Verbindungen zu mehreren Clients halten kann und das Skript weiterhin die Updates vom anderen Programm empfangen kann?
Der session_start wird jedes Mal aufgerufen, wenn das Skript geöffnet ist. Ist es nicht möglich, alle gleichen Skripte mit derselben Sitzungs-ID auszuführen, und wenn eine Kopie einen Sitzungswert geändert hat, ist dies für ein bereits ausgeführtes Skript nicht sichtbar.
Tut mir leid, ich kann PHP-Skripte schreiben, habe aber nur wenig Know-how über die Beziehung zwischen verschiedenen Funktionen.
Mobile version