Я пытаюсь ограничить максимальное время выполнения shell_exec в PHP, скажем, 20 секундами и получить любой результат, сгенерированный за это время. Если shell_exec завершится менее чем за 20 секунд, сценарий должен продолжить работу.
В частности, я разрабатываю функцию, которая перебирает большое количество ревизий репозитория subversion. Для каждой версии он извлекает svn diff и подсчитывает количество добавленных строк. Проблема в том, что если в ревизии были зафиксированы очень большие файлы, скрипт зависнет. Поэтому я пытаюсь ограничить время выполнения каждой команды svn diff.
popen() в сочетании с sleep() не вариант, так как кажется, что скрипт засыпает на 20 секунд для каждой итерации, что было бы невозможно при 100 итерациях. Установка max_execution_time также не является вариантом, так как это вернет фатальную ошибку.