Ich möchte einen C++ (11) -Container erstellen (Boost kann verwendet werden), der Datenbankverbindungen enthält. Ich würde gerne in der Lage sein, in den Container den Verbindungszeiger einzubringen, aber std :: vector kennt die Einblendzeit nicht, also kann ich sowas benutzen.C++ - Container mit Ablaufzeit
Wenn die Verbindung Ausführung beginnt es wird auch jetzt in dem Behälter mit der Zeit gedrückt().
Wenn die Verbindung den Auftrag in der Datenbank beendet, wird die Verbindung aus dem Container gelöscht.
Idealerweise wird meine Klasse eine Reinigungsmethode, die in regelmäßigen Abständen überprüft, ob eine Verbindung in dem Behälter für mehr als ein bestimmtes Zeitintervall ist, das heißt 30 sec. Wenn es wahr ist, wird die Verbindung von der Datenbank freigegeben.
Irgendwelche Ideen, gibt es irgendeine Standardlösung?
Haben Sie unterstützt, wenn Ihr Datenbanktreiber Verbindungspooling geprüft:
Zusätzlich Sie die Verwendung von STL
std::partition
um machen könnte zu der abgelaufenen Verbindungen wie loswerden? Vielleicht lohnt sich ein Blick, bevor Sie die Hälfte dieses Rades neu erfinden. – nvoigtEs unterstützt, aber einige Abfragen können zu viel Zeit dauern, die Datenbankzeile gesperrt, und das wollen wir nicht – cateof