Задать вопрос
@VZVZ
Reverse-Engineer, Software Developer, Architect

Почему серваки возвращают не «HTTP 408 (Request Timed Out)», а 200 и текст «Maximum execution time of xxx seconds exceeded», или еще какую чушь?

Задача:
имеется REST API на PHP. В нем возможен баг (или просто тупизм сервака), хотелось бы, чтобы при запросах через jQuery, срабатывал "error" callback (для логирования и др.) а success callback не срабатывал.
А это будет происходить в таком случае только если ограничить timeout в самих AJAX Settings (т.е. на клиенте - а не на серваке), или если сервак вернет какую-то ошибку, например, 408.

Для тестов создал скрипт с бесконечным циклом.

На локалхосте (XAMPP) видимо execution limit стоит в 30 сек.
Сервак возвращает ответ с текстом "Maximum execution time of 30 seconds exceeded", что само по себе не кстати (ответ должен быть в формате JSON, не надо его засорять), а главное - возвращает 200, как будто все ок. И как прикажете такое

На хостинге видимо execution limit нету.
Сервак возвращает ошибку 500 и текст про "Internal Server Error".
Это лучше, но опять не совсем то.

Почему везде так?
Это так и должно быть, или это сугубо проблема Apache/nginx?
Что делать? Только задавать timeout на клиенте?

P.S.
И вообще, что-то я не вижу, чтоб хоть какую из этих ошибок (ну кроме 404) какой-то сервак возвращал бы "из коробки".
Скажем, 500 тоже не используется при ошибках в PHP.
Ну такие ошибки можно самому отловить, и вернуть их самому, либо как HTTP, либо в JSON как-то. А с этой что делать?

P.P.S.
Не стесняйтесь писать, что "пых уныл, вот у нас в Python\Ruby\ASP.NET\... такого нет")))))
Но в первую очередь хотел бы ответа на вопрос в заголовке
  • Вопрос задан
  • 405 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
begemot_sun
@begemot_sun
Программист в душе.
Это проблема сугубо PHP.
Когда 200-статус генерится раньше ошибки (execution limit).
Потому что PHP имеет свойство не буферизовать вывод, и разрабы должны отправить сначала шапку ответа, а потом сам ответ. Очевидно Maximum execution time of 30 seconds exceeded генерится самим PHP.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽