Pao*_*aJ. 2 c++ postgresql libpqxx c++11
我在工作线程中永远运行,连接到 postgresql 数据库(在 C++ 中使用 libpqxx)
#include <pqxx/connection>
// later in code on starting thread only once executed
connection* conn= conn = new connection(createConnectionString(this->database, this->port, this->username, this->password));
Run Code Online (Sandbox Code Playgroud)
如何检查几个小时后连接是否仍然处于活动状态,例如,如果我同时重新启动 postgre 服务器(工作线程仍在运行并且未重新启动),当我尝试执行新查询时,我应该检查它是否仍然有效并重新连接不是。如何知道它是否还活着?
如何检查几个小时后连接是否仍然有效
不。
只要使用它,就像它是活的一样。如果由于出现问题而引发异常,请捕获该异常并重试从一开始就失败的事务。
“测试”连接或“验证”连接的尝试注定会失败。存在固有的竞争条件,验证和实际使用之间的连接可能会消失。因此,无论如何,您都必须正确处理异常 - 此时,首先就没有必要进行连接验证。
由于多种原因,查询可能会失败并且事务可能会中止。因此,您的应用程序必须始终在重试循环中执行事务,以检测可能的瞬时故障情况。这只是一种可能性 - 您还可以让管理员取消查询、由死锁检测器中止事务、由序列化失败取消事务等。
为了避免不必要的低级别 TCP 超时,您可以在服务器端或客户端连接上设置 TCP 保持活动。
如果你真的坚持这样做,知道这是错误的,只需发出一个空查询,即"".
| 归档时间: |
|
| 查看次数: |
1382 次 |
| 最近记录: |