Скрипт именно
работает бесконечно долго?
Потому что
Функция set_time_limit() и директива max_execution_time влияют на время выполнения только самого скрипта. Время затраченное на различные действия вне скрипта, такие как системные вызовы функции system(), потоковые операции, запросы к базам данных и т.п. не включаются в расчет времени выполнения скрипта.
То есть если допустим у Вас граббер где 50 секунд file_get_contents отрабатывает, а потом 30 секунд запрос в базу идет и еще sleep-ом догоняетесь к примеру секунд на 40, то все эти 50-30-40 не в счет.
И еще на всякий случай. set_time_limit Вы же один раз выполняете? Просто если он случайно в цикл попал и выполняется на каждой итерации, то эти выставляемые 10 секунд они отсчитываются с момента задания значения set_time_limit_ом