Moin!
Hello,
Ist eine Session aktiv? Dann setzt jedes Skript ein Lock auf die Session, damit sich zwei gleichzeitige Skripte nicht unsachgemäß die Daten zerstören - als Effekt werden alle Skripte auf dieselbe Session seriell abgearbeitet.
Wow, ich liebe dieses Forum einmal mehr. Ich hatte keine Idee mehr.
Also, das erklärt einiges. Ja, es ist eine Session aktiv. Und bei jenem playground-script, was sich laden lässt, wird eben keine gestartet. Das erklärt auch, warum ich mit einem anderen Browser parallel zugreifen kann.
Zwei Browser -> i.d.R. zwei unterschiedliche Sessions. Die beißen sich also nicht.
"In der Regel"!?!
Selber Browser -> i.d.R. begrenzt auf z.B. 2 (oder auch 8, je nach Browser) offene Requests pro Domain. Das kann man am Browser zwar meistens konfigurieren, aber das Konfigurieren kann man schlecht von jedem User verlangen...
Wieviele Connections der Browser zum Server öffnet, ist egal. Die Grenze liegt bei einem Wert größer als 1. Also sind parallele Requests möglich und technisch auch erwünscht.
Aber wenn der Server die Abarbeitung eines Requests solange pausiert, bis das Session-File entsperrt ist, bringt das nichts.
Alternative:
Das rechenintensive Script per ecec() in den Hintergrund stellen. Dort läuft das dann auch weiter, ohne dass die Browserseite noch offen ist. Da kannst Du dann gelegentlich nachfragen (per Ajax), wie weit es schon gediehen ist.
Das Verlagern eines zeitaufwendigen Tasks in den Hintergrund hat denselben Effekt, wie das vorzeitige Wegschreiben und Freigeben des Session-Files.
Mit dem Vorteil, dass der Browser weiterhin mit Infos über den Fortgang versorgt werden könnte, aber am Ende eben kein Update der Session mehr stattfinden kann.
Im Archiv findest Du eine Reihe von Beiträgen zum Thema
z.B.:
http://forum.de.selfhtml.org/archiv/2007/1/t145034/#m941113
http://forum.de.selfhtml.org/archiv/2007/3/t149507/#m971082usw.
Das Problem hier ist Session-Locking. Davon schon mal gehört? Locking ist doch sonst dein Lieblingsthema, Nebenläufigkeit etc.
Locking wird übrigens gern vergessen, wenn man die Session-Daten lieber in einer Datenbank ablegen will.
- Sven Rautenberg