Pool::tryAcquire
(PHP 8.6+, True Async 1.0)
public Pool::tryAcquire(): mixed
Tente d’acquérir une ressource du pool sans bloquer. Si une ressource libre
est disponible ou si la limite max n’a pas été atteinte, retourne la ressource immédiatement.
Sinon, retourne null.
Paramètres
Cette méthode ne prend aucun paramètre.
Valeur de retour
Retourne une ressource du pool ou null si aucune ressource libre n’est disponible
et que la limite maximale a été atteinte.
Exemples
Exemple #1 Tentative d’acquisition d’une ressource
<?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 "All connections are busy, try again later\n";
} else {
try {
$result = $conn->query('SELECT COUNT(*) FROM orders');
echo "Orders: " . $result->fetchColumn() . "\n";
} finally {
$pool->release($conn);
}
}
Exemple #2 Solution de repli lorsque le pool est indisponible
<?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 unavailable — query database directly
return fetchFromDatabase($key);
}
try {
return $client->get($key) ?? fetchFromDatabase($key);
} finally {
$pool->release($client);
}
}
Voir aussi
- Pool::acquire — Acquisition bloquante de ressource
- Pool::release — Libérer une ressource dans le pool