2016-11-04 2 views
0

Ich habe eine Web-Anwendung in der Entwicklung auf localhost in PHP und JS geschrieben, die gelegentlich geladen wird zu stecken. Durch stecken bleiben, ich meine, Sie sehen immer noch nichts auf der Seite. Sobald es klemmt, auch wenn ich es in einem anderen Tab öffne, ist es immer noch fest. Nur wenn ich das Fenster schließe und es wieder öffne, würde es wieder funktionieren.PHP Web App stecken loading

Davon vermute ich, dass es etwas mit Sitzungen zu tun hat, aber mir ist nicht bewusst, wie Sitzungen dies beeinflussen können. Handelt es sich um den PHP-Sitzungscode oder den Browser?

Ich verwende meistens Chrome (jetzt Version 54). Der Server ist XAMPP Version 5.6.3 läuft unter Windows 10. Die App stellt Verbindungen zu SQL Server 2012 her, obwohl ich glaube, dass das in diesem Fall nicht relevant ist.

Zusätzliche Informationen:

Wenn ich lange genug warten, schließlich wird das Skript Timeout und zeigen:

Fatal error: Maximum execution time of 90 seconds exceeded in project_functions.php on line 22

function startSession(){ 
    if (session_status() == PHP_SESSION_NONE) { 
     session_start(); 
    } // this is line 22 
} 

Eine Seite Frage: Warum ist es auf der Leitung 22 stecken, die ist nur eine schließende Klammer?

+0

Vielleicht können Sie uns Ihren Code zeigen. –

Antwort

3

Die Standardimplementierung von session_start sperrt die Sitzung, um Rennbedingungen zu verhindern. Das heißt, wenn Sie eine Sitzung in einem Skript mit langer Laufzeit öffnen und es nicht mit session_write_close schließen, wartet die nächste Anforderung, die versucht, diese Sitzung zu öffnen, bis die Sperre aufgehoben wird.

Die einfache Lösung: Auch die Sitzung schließen früh mit einem Aufruf an session_write_close()

+0

Bis jetzt scheint dies, es zu lösen, danke –