larush
@larush
Облегчаю себе работу, создавая инструменты на РНР

Как обрабатывать ошибки в РНР, в частности WebSocket соединения?

Вопрос для меня "системный", т.е для решения которого не хватает знаний и не известно как подойти.
Из меню через Ajax происходит вызов функции подключения через WebSockets. Если WS-сервер не отвечает, то из функции возвращается назад сообщение "мол ошибка соединения с сервером". Я хотел бы отобразить свое сообщение на экране. Если ошибки отключены, то все так и работает, но я хотел бы реализовать логирование ошибок (если есть надежный способ, то буду благодарен за наводку).
Вариант разбирать response из ветви "error: function (response)" не устраивает из-за длинного вывода, который я и хотел бы записать в файл (пользователю он ни к чему). Вопросы:
1 Возможно ли передать вместе с ошибкой (в виде элемента массива) и свой код/описание ошибки?
2 Возможно ли как-то заставить Ajax не реагировать на ошибку и обрабатывать ветвь "success: function (response) "?
3 Имеется ли другой объединяющий обе ветви "success + error" параметр на выходе в котором я бы разместил анализ ответа?
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 2
larush
@larush Автор вопроса
Облегчаю себе работу, создавая инструменты на РНР
Если можно то готов к такому варианту - в код ошибки помещен тот текст что я формировал, как мне в JS получить значение resp ? Я понимаю что тема по РНР, но вдруг я просто торможу и все проще чем есть на самом деле
Ответ был получен через console.log(response['responseText']).
.


Warning: fsockopen(): Unable to connect to localhost:7777 (Попытка установить соединение была ...C:\web\OSr\domains\targos\src\ServersController.php on line 90

{"switch":"show4locmenu","resp":"...}
Ответ написан
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
Возможно ли передать вместе с ошибкой (в виде элемента массива) и свой код/описание ошибки ?
Конечно, для этого обычно используются исключения. Не везде, но во многих случаях они нормально работают. Другое дело что есть 2 нюанса:
1) При ошибке вебсокет сервера никакую ошибку от собственно сервера вы не получите (он вам просто не ответил), но вы в любом случае получите статус ошибки, который не обязательно отдавать пользователю, а ориентируясь на номер ошибки отдать свое сообщение.
2)
но я хотел бы реализовать логирование ошибок
Надеюсь вы понимаете что с клиентской стороны что-либо делать по этому поводу невозможно, а со стороны сервера и так есть лог ошибок, если это не ошибки логики, которые не ошибки системы, а скорее неверное поведение (типа "поле не заполнено" или "недопустимые символы"). Такие тоже можно логировать, но во первых - а смысл?, а во вторых все равно это реализовывать средствами пыха. И ошибок типа "сервер не доступен" конечно там не будет.

2 Возможно ли как-то заставить Ajax не реагировать на ошибку и обрабатывать ветвь ": function (response) " ?
да, точнее надо просто не обрабатывать результат в success. Смотри ниже.

3 Имеется ли другой объединяющий обе ветви "success + error" параметр на выходе в котором я бы разместил анализ ответа ?
complete
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы