Hi zusammen,
derzeit arbeite ich mit PHP 4.2.2 auf Windows 2000 mit Apache 1.3.22 und Oracle 8.1.7.
Ich habe eine Liste von Links, die jeweils eine neue Seite öffnen und hierzu einen Datenbankzugriff benötigen (diese Zugriffen benötigen nicht viel Zeit, sondern nur Sekundenbruchteile). Wenn nun ein Benutzer mehrere dieser Links schnell nacheinander (ist möglich weil der Browser nicht so schnell ist, oder weil das Aktualisieren der Seite nicht schnell genug stattfindet) anwählt, passiert es, dass im Hintergrund (also im Webserver) die Skripte weiterlaufen und nur der generierte Inhalt des zuletzt angewählten Links angezeigt wird.
Diese Skripte werden nun aber nicht beendet, sonder beanspruchen weiterhin Speicher, was sich dadurch bemerkbar macht, dass der Webserver immer mehr Speicher benötigt. Eine Folgeerscheinung ist, dass dadurch die Datenbankverbindungen nicht geschlossen werden. Dadurch passiert es dann, dass der Webserver irgendwann Speicherprobleme bekommt oder der Datenbankserver keine neuen Verbindungen mehr zuläßt.
Die Skripte können nur durch das Beenden des Webservers entfernt werden. Die Datenbankverbindungen werden dann auch gleich entfernt.
Mit der Option ignore_user_abort und register_shutdown_function(...) habe ich schon erfolglos versucht die Skripte zu beenden.
Nun habe ich den Punkt erreicht an dem ich nicht mehr weiter komme und mich frage, ob das Problem vielleicht auch nicht direkt bei PHP liegt, sondern dass der Webserver nicht richtig konfiguriert ist, oder dass die von PHP verwendete DLL zur Datenbankanbindung dran schuld sind?
Es wäre echt super, wenn jemand eine Lösung parat hätte.
Schon mal ein Danke im Vorraus!
Juergen
derzeit arbeite ich mit PHP 4.2.2 auf Windows 2000 mit Apache 1.3.22 und Oracle 8.1.7.
Ich habe eine Liste von Links, die jeweils eine neue Seite öffnen und hierzu einen Datenbankzugriff benötigen (diese Zugriffen benötigen nicht viel Zeit, sondern nur Sekundenbruchteile). Wenn nun ein Benutzer mehrere dieser Links schnell nacheinander (ist möglich weil der Browser nicht so schnell ist, oder weil das Aktualisieren der Seite nicht schnell genug stattfindet) anwählt, passiert es, dass im Hintergrund (also im Webserver) die Skripte weiterlaufen und nur der generierte Inhalt des zuletzt angewählten Links angezeigt wird.
Diese Skripte werden nun aber nicht beendet, sonder beanspruchen weiterhin Speicher, was sich dadurch bemerkbar macht, dass der Webserver immer mehr Speicher benötigt. Eine Folgeerscheinung ist, dass dadurch die Datenbankverbindungen nicht geschlossen werden. Dadurch passiert es dann, dass der Webserver irgendwann Speicherprobleme bekommt oder der Datenbankserver keine neuen Verbindungen mehr zuläßt.
Die Skripte können nur durch das Beenden des Webservers entfernt werden. Die Datenbankverbindungen werden dann auch gleich entfernt.
Mit der Option ignore_user_abort und register_shutdown_function(...) habe ich schon erfolglos versucht die Skripte zu beenden.
Nun habe ich den Punkt erreicht an dem ich nicht mehr weiter komme und mich frage, ob das Problem vielleicht auch nicht direkt bei PHP liegt, sondern dass der Webserver nicht richtig konfiguriert ist, oder dass die von PHP verwendete DLL zur Datenbankanbindung dran schuld sind?
Es wäre echt super, wenn jemand eine Lösung parat hätte.
Schon mal ein Danke im Vorraus!
Juergen
Kommentar