Hallo zusammen. Ihr kennt alle bestimmt die set_time_limit() Funktion. Die Funktion limitiert die "execution" Zeit eines Skripts. Es ist aber nicht so einfach, sleep() und IO wait z.B. sind nicht mitberechnet, da es keine "execution" Zeit ist. Ich hatte gerade ein Problem mit GTA: der Abholungsskript kann mehr als 24h laufen, wenn GTA und zeitlich nicht antwortet. Das hindert natürlich den nächsten Import. Um die echte Laufzeit zu limitieren kann man z.B. ein pcntl_fork() machen und dann das Kindprozess kontrollieren und wenn nötig abschießen. Es gibt aber auch eine weitere Möglichkeit: Linux timeout. $ time timeout 1s sleep 100 timeout 1s sleep 100 0.00s user 0.00s system 0% cpu 1.005 total Der timeout Befehl limitiert die Laufzeit des Prozesses. Im meinem Fall also habe ich folgendes in CRON hinzugefügt: 00 02 * * * root timeout -k 30s 20h php /var/www/xres_jt/xhotels/import_GTA_request_pa.php > /dev/null Der import_GTA_request_pa.php Skript darf nicht mehr als 20h (20 Stunden) laufen, danach wird ein SIGTERM geschickt. Wenn es nach 30s (Sekunden) nicht reagiert (-k 30s) wird ein SIGTERM geschickt. Ich finde dass es ein einfacher und flexibler Weg ist. Ihr habt bestimmt einige Stellen wo es nützlich wird. VG Viktoras -- Mit freundlichen Grüßen Viktoras Bezaras - Entwickler - ________________________________________________________ TraSo GmbH Georg-Schumann-Str. 294 D-04159 Leipzig Tel.: +49 341 355 740 44 E-Mail: v.bezaras@traso.de Internet: http://www.traso.de ________________________________________________________ Geschäftsführer: Haiko Gerdes Handelsregister: Amtsgericht Leipzig, HRB 21850
participants (1)
-
Viktoras Bezaras