Kein Timeout bei CLI-Script, das auf das Ergebnis einer Oracle-Abfrage wartet
am 19.10.2005 14:06:43 von Sigrid Krug
Hallo!
Folgendes Problem: ein Skript, das als CLI-Skript laufen soll, holt Daten
aus der Web-DB und versucht sie in eine Oracle-DB zu schreiben. Im Zuge der
Behandlung möglicher auftretender Fehler hab ich mal folgendes Szenrario
getestet: ich habe in der Oracle-DB über PL/SQL-Developer die Daten aus der
Tabelle gelöscht, aber nicht committed. Somit war der Table gesperrt und das
PHP-Script konnte nichts hineinschreiben. Es wartete nun tatsächlich 12
Stunden, bis ich ein Commit machte, um dann weiterzulaufen :-)
Änderungen der php.ini-Parameter:
oci8.persistent_timeout = 60
und
max_execution_time = 200
hatten keine Auswirkungen.
Ich hätte gerne, daß das Script nach einer gewissen Zeit abbricht und den
Timeout protokolliert.
Hat da jemand Erfahrung damit?
Danke und Grüße, Sigrid
Re: Kein Timeout bei CLI-Script, das auf das Ergebnis einer Oracle-Abfragewartet
am 20.10.2005 14:58:41 von Uli Honal
Sigrid Krug wrote:
> Folgendes Problem: ein Skript, das als CLI-Skript laufen soll,=20
> [...] wartete nun tatsächlich 12 Stunden, [..] :-)
> Änderungen der php.ini-Parameter:
> oci8.persistent_timeout =3D 60
> und
> max_execution_time =3D 200
> hatten keine Auswirkungen.
>=20
> Ich hätte gerne, daß das Script nach einer gewissen Zeit abbricht u=
nd den
> Timeout protokolliert.
> Hat da jemand Erfahrung damit?
Habe leider keine Erfahrung, aber im Manual gibt es einen Hinweis [1],
dass zur 'max_execution_time' nicht die Zeit zählt, die auf eine
Datenbank-Query gewartet wird:
"Note: The set_time_limit() function and the configuration directive
max_execution_time only affect the execution time of the script
itself. Any time spent on activity that happens outside the execution
of the script such as [..] database queries, etc. is not included when
determining the maximum time that the script has been running."
Die Einstellung 'oci8.persistent_timeout' legt nach meinem Verständnis
nur fest, wie lange eine ungenutze Verbindung offengehalten wird [2].
Das Zeitlimit für die Ausführung der Query müsstest Du irgendwie
anders setzen...
?
Grüsse,
-Uli
[1] http://php.net/function.set_time_limit
[2] http://php.net/manual/en/ref.oci8.php#ini.oci8.persistent_ti meout