Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
18.04.2019, 18:39
|
|||
---|---|---|---|
libpq: корректная асинхронщина вообще возможна с ним? |
|||
#18+
Проблема: у меня есть открытое асинхронное соединение, которое я в цикле использую: засылаю туда что-то и получаю ответы. Но если кто-то перезагружает сервер, то сокет получает от сервера какие-то входящие сообщения, которые я даже и не ожидаю от него. (И, видимо, сокет закрывается.) При этом соединение даже позволяет вести в себя запись! (не полностью закрытый сокет?) Такая ситуация ни в одном примере не обрабатывается, и не понятно как её обработать вообще - соединение может оборваться в любой момент, в том числе между if(PQstatus() != CONNECTION_BAD) и посылкой туда чего-либо. libpq при неожиданном приёме данных о перезагрузке прямо в консоль сама пишет: Код: plaintext 1. 2. 3. 4.
При этом никаких статусов и ничего не выставляется для самого соединения. В результате, следующей попыткой послать запрос в ту же консольку прилетает такое: message type 0x52 arrived from server while idle message type 0x4b arrived from server while idle message type 0x5a arrived from server while idle Как отлавливать такую ситуацию? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
18.04.2019, 18:42
|
|||
---|---|---|---|
libpq: корректная асинхронщина вообще возможна с ним? |
|||
#18+
Дополню: последующие попытки заслать в соединение запрос не терпят неудачу! А ожидание ответа из этого сокета отваливается по тайм-ауту. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=53&tablet=1&tid=1995239]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 136ms |
0 / 0 |