Code — ein PDO mit Pool, 3 Koroutinen
// Ein PDO-Objekt mit einem Pool von 2 Verbindungen
$pdo = new PDO($dsn, $user, $pass, [
PDO::ATTR_POOL_ENABLED => true,
PDO::ATTR_POOL_MAX => 2,
]);
for ($i = 1; $i <= 3; $i++) {
spawn(function() use ($pdo, $i) {
// prepare() holt automatisch eine Verb. aus dem Pool
$stmt = $pdo->prepare("SELECT * FROM users WHERE id=?");
$stmt->execute([$i]); // wartet auf DB
$user = $stmt->fetch();
processUser($user);
// $stmt verlässt den Scope -> refcount=0
// Verb. kehrt automatisch zum Pool zurück!
});
}
PDO Pool (ATTR_POOL_MAX: 2)
Verbindung #1
verfügbar
Verbindung #2
verfügbar
Warteschlange:
leer
Koroutine 1
bereit
Koroutine 2
bereit
Koroutine 3
bereit