Bekanntlich läuft normalerweise jedes php-Script pro Aufruf in der Serverumgebung (bei mir im Apache2) als eine Art eigenständige Instanz des betreffenden php-Scripts, ich bezeichne im folgenden also mal einen eigenständigen Scriptdurchlauf als Script-Instanz.
Verschiedene Script-Instanzen eines Scripts können normalerweise zeitlich parallel ablaufen.
Kommen allerdings die Scriptaufrufe vom gleichen Client (z.B. gleiche IP und gleiches Clientprogramm), funktioniert der parallele Aufruf bei mir nicht mehr, wie erwartet oder zumindest von mir erhofft.
Beide Script-Instanzen werden zeitlich nacheinander abgearbeitet.
test.php:
Rufe ich das Script z.B. in zwei verschiedenen Tabs des gleichen Browsers nahezu zeitgleich auf, wartet der zweite Script-Aufruf, bis der erste Durchlauf beendet ist.
(getestet mit jeweils 2 Tabs in Mozilla und Opera auf
Server:
Apache/2.2.4 - php PHP/5.2.1 - WinXP
Apache ?? - php 5.2.0-8-etch Debian
)
Rufe ich dasselbe Script nahezu zeitgleich von zwei verschiedenen Browsern oder mit zwei verschiedenen Host-Angaben (z.B mit.: http://127.0.0.1/test.php und http://localhost/test.php) auf, starten beide Script-Instanzen sofort nach dem jeweiligen Script- Aufruf. (es wird also nicht gewartet, bis eine gerade laufende Script-Instanz beendet ist).
Dieses Verhalten hatte ich nicht erwartet.
Woran liegt das?
Wie kann ich mehrere Scriptaufrufe des gleichen Scripts vom gleichen Client zeitl. parallel abarbeiten lassen.
Verschiedene Script-Instanzen eines Scripts können normalerweise zeitlich parallel ablaufen.
Kommen allerdings die Scriptaufrufe vom gleichen Client (z.B. gleiche IP und gleiches Clientprogramm), funktioniert der parallele Aufruf bei mir nicht mehr, wie erwartet oder zumindest von mir erhofft.
Beide Script-Instanzen werden zeitlich nacheinander abgearbeitet.
test.php:
PHP-Code:
<?php
set_time_limit(180);
ob_implicit_flush() ;
for($i =0; $i<=40; $i++){
echo "$i <br/>\n";
sleep(1);
}
?>
(getestet mit jeweils 2 Tabs in Mozilla und Opera auf
Server:
Apache/2.2.4 - php PHP/5.2.1 - WinXP
Apache ?? - php 5.2.0-8-etch Debian
)
Rufe ich dasselbe Script nahezu zeitgleich von zwei verschiedenen Browsern oder mit zwei verschiedenen Host-Angaben (z.B mit.: http://127.0.0.1/test.php und http://localhost/test.php) auf, starten beide Script-Instanzen sofort nach dem jeweiligen Script- Aufruf. (es wird also nicht gewartet, bis eine gerade laufende Script-Instanz beendet ist).
Dieses Verhalten hatte ich nicht erwartet.
Woran liegt das?
Wie kann ich mehrere Scriptaufrufe des gleichen Scripts vom gleichen Client zeitl. parallel abarbeiten lassen.
Kommentar