Pool::tryAcquire
(PHP 8.6+, True Async 1.0)
public Pool::tryAcquire(): mixed
Versucht, eine Ressource aus dem Pool ohne Blockierung zu erwerben. Wenn eine freie Ressource
verfuegbar ist oder das max-Limit noch nicht erreicht wurde, wird die Ressource sofort zurueckgegeben.
Andernfalls wird null zurueckgegeben.
Parameter
Diese Methode nimmt keine Parameter entgegen.
Rueckgabewert
Gibt eine Ressource aus dem Pool oder null zurueck, wenn keine freien Ressourcen verfuegbar sind
und das maximale Limit erreicht wurde.
Beispiele
Beispiel #1 Versuch, eine Ressource zu erwerben
<?php
use Async\Pool;
$pool = new Pool(
factory: fn() => new PDO('mysql:host=localhost;dbname=app', 'user', 'pass'),
max: 5
);
$conn = $pool->tryAcquire();
if ($conn === null) {
echo "Alle Verbindungen sind belegt, versuchen Sie es spaeter erneut\n";
} else {
try {
$result = $conn->query('SELECT COUNT(*) FROM orders');
echo "Bestellungen: " . $result->fetchColumn() . "\n";
} finally {
$pool->release($conn);
}
}
Beispiel #2 Fallback wenn der Pool nicht verfuegbar ist
<?php
use Async\Pool;
$pool = new Pool(
factory: fn() => new CacheClient('127.0.0.1', 11211),
max: 3
);
function getData(Pool $pool, string $key): mixed
{
$client = $pool->tryAcquire();
if ($client === null) {
// Cache nicht verfuegbar — Datenbank direkt abfragen
return fetchFromDatabase($key);
}
try {
return $client->get($key) ?? fetchFromDatabase($key);
} finally {
$pool->release($client);
}
}
Siehe auch
- Pool::acquire — Blockierender Ressourcenerwerb
- Pool::release — Eine Ressource an den Pool zurueckgeben