Как действительно ограничить максимальное время выполнения скрипта PHP?
Всем привет!
Как известно max_execution_time можно ограничить время выполнения сценария, однако если в процессе выполнения будет вызван, например, file_get_contents, который будет запрашивать url, который отвечает например 100 сек, то при max_execution_time 30 сек, всё равно скрипт будет выполняться 100 сек. Об этом, собственно, указано в документации PHP.
Вопрос: реально ли как-либо ограничить время выполнения в данном случае в 30 сек, при этом не задавая контекст file_get_contents или не устанавливая максимальное время для сокетов. То есть интересует безусловное прекращение скрипта, вне зависимости от того что там в коде.
Первое что приходит на ум - внешний контроль.
Запустите родительский скрипт, он запустит воркера и будет следить сколько тот работает - дольше = смерть через KILL
The timeout for serving a single request after which the worker process will be killed. This option should be used when the 'max_execution_time' ini option does not stop script execution for some reason. A value of '0' means 'off'. Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
Default Value: 0
Для apache можно глянуть в сторону TimeOut, но я не уверен, что это сработает именно так, как нужно (давно не использовал apache).
однако если в процессе выполнения будет вызван, например, file_get_contents, который будет запрашивать url, который отвечает например 100 сек, то при max_execution_time 30 сек, всё равно скрипт будет выполняться 100 сек
тесты в студию)
register_tick_function поможет решить эту абстрактную проблему