Как завершить скрипты по таймауту
Задача: ряд скриптов иногда «зависают». Есть два варианта — переделать скрипт, чтобы не «зависал». Не всегда возможно. Второй вариант: отслеживать время работы скрипта, и по какому то предельному значению времени выполнения — убивать. Например так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#!/usr/local/bin/php <?php $timeout=100; // время после которого скрипт считаем зависшим $res=`ps -ax | grep sos | awk '{print $1,$4}'`; $resa=explode("\n",$res); foreach ($resa as $value) { if ($value!=""){ $va=explode(" ",$value); $pid=$va[0]; $timea=explode(":",$va[1]); if (isset($timea[1])==true){ $time=$timea[0]; echo "PID: $pid, TIME: $time\n"; if ($time>$timeout){ `kill $pid`; }; }; }; }; ?> |