Непонятка с Maximum execution time

LovelAss
На сайте с 05.06.2009
Offline
96
681

Опишу ситуацию вкратце.

Есть сервер Apache + PHP как модуль. Есть max_execution_time = 30 в файле php.ini и есть set_time_limit(0); в скрипте.

Так вот, этот скрипт, время от времени, прерывает свою работу с ошибкой PHP Fatal error: Maximum execution time of 900 seconds exceeded. Причём работать он может 5-6 часов подряд, после чего вылетает с ошибкой.

Что за бес генерирует эту ошибку и по какой причине?

P.S. Заметил что ошибка указывает на строку с функцией file_get_contents. Быть может есть взаимосвязь между этой ф-цией и таймаутом апача? Помогите докопаться до сути проблемы.

LEOnidUKG
На сайте с 25.11.2006
Offline
1725
#1

Значит php.ini вообще не считывается или какая-то сверх настройка лимитирует выполнение. У вас собственный сервер или хостинг?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
TOBBOT
На сайте с 04.11.2014
Offline
41
#2

может файл занят другим приложением.

Инструменты интернет-маркетинга - JLAB (http://jlab.io/) Бесплатная автоматизация с программой TOBBOT (http://tobbot.com/)
LovelAss
На сайте с 05.06.2009
Offline
96
#3

Локальный сервер. php.ini считывается прекрасно, set_time_limit тоже работает. А вот сверхнастроек, связанных с этим параметром, я так и не нашёл. Пробовал TimeOut 0 в конфиге апача прописать, но это не помогло. Сейчас попробую добавить timeout для file_get_contents, но всё равно хотелось бы добраться до сути проблемы.

---------- Добавлено 21.08.2015 в 13:02 ----------

TOBBOT:
может файл занят другим приложением.

О каком файле речь?

totamon
На сайте с 12.05.2007
Offline
437
#4

[Editors note: As of PHP 5.2.1 you can specify `timeout` context option and pass the context to file_get_contents()]


The only way I could get get_file_contents() to wait for a very slow http request was to set the socket timeout as follows.

ini_set('default_socket_timeout', 120);
$a = file_get_contents("http://abcxyz.com");

Other times like execution time and input time had no effect.

оно?

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
LEOnidUKG
На сайте с 25.11.2006
Offline
1725
#5

Точно, PHP то какой установлен?

LovelAss
На сайте с 05.06.2009
Offline
96
#6
totamon:
оно?

Если б я знал, я бы тему здесь не создавал. В любом случае, я не пойму откуда берутся грёбаные 900 seconds, если default_socket_timeout = 60.

LEOnidUKG:
Точно, PHP то какой установлен?

5.5.11

LEOnidUKG
На сайте с 25.11.2006
Offline
1725
#7
LovelAss:
Если б я знал, я бы тему здесь не создавал. В любом случае, я не пойму откуда берутся грёбаные 900 seconds, если default_socket_timeout = 60.

5.5.11

А если через curl запустить?

totamon
На сайте с 12.05.2007
Offline
437
#8
LovelAss:
В любом случае, я не пойму откуда берутся грёбаные 900 seconds, если

надо искать, в ТС поиск внутри файлов по тексту "900" в папке сервера и системы, только в голову приходит) еще в nginx вроде некоторые таймауты в 900с прописаны, но у вас же апач?

LovelAss
На сайте с 05.06.2009
Offline
96
#9
LEOnidUKG:
А если через curl запустить?

Смысл не в этом. Тыкнуть пальцем в небо и попасть в самолёт - дело второе. Я хочу разгадать тайну этих 900-от секунд. Не могут же они мистическим образом появляться и исчезать, где-то должна быть настройка, возможно и умолчание, из-за которой появляется эта ошибка. Хочу именно суть уловить.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий