Ограничьте время выполнения shell_exec и захватите любой сгенерированный вывод

Я пытаюсь ограничить максимальное время выполнения shell_exec в PHP, скажем, 20 секундами и получить любой результат, сгенерированный за это время. Если shell_exec завершится менее чем за 20 секунд, сценарий должен продолжить работу.

В частности, я разрабатываю функцию, которая перебирает большое количество ревизий репозитория subversion. Для каждой версии он извлекает svn diff и подсчитывает количество добавленных строк. Проблема в том, что если в ревизии были зафиксированы очень большие файлы, скрипт зависнет. Поэтому я пытаюсь ограничить время выполнения каждой команды svn diff.

popen() в сочетании с sleep() не вариант, так как кажется, что скрипт засыпает на 20 секунд для каждой итерации, что было бы невозможно при 100 итерациях. Установка max_execution_time также не является вариантом, так как это вернет фатальную ошибку.


person DavidC    schedule 10.05.2011    source источник


Ответы (1)