Pool::recover
(PHP 8.6+, True Async 1.0)
public Pool::recover(): void
将池转换为 RECOVERING 状态。在此状态下,池允许有限数量的请求通过以检查服务可用性。如果请求成功,Circuit Breaker 会自动将池转换为 ACTIVE 状态。如果请求继续失败,池将返回 INACTIVE 状态。
参数
该方法不接受参数。
返回值
不返回值。
示例
示例 #1 恢复尝试
<?php
use Async\Pool;
use Async\CircuitBreakerState;
$pool = new Pool(
factory: fn() => new HttpClient('https://api.example.com'),
max: 10
);
// Pool is deactivated, try to recover
if ($pool->getState() === CircuitBreakerState::INACTIVE) {
$pool->recover();
echo "Pool transitioned to recovery mode\n";
// Circuit Breaker will allow probe requests through
}
示例 #2 定期恢复尝试
<?php
use Async\Pool;
use Async\CircuitBreakerState;
spawn(function() use ($pool) {
while (!$pool->isClosed()) {
if ($pool->getState() === CircuitBreakerState::INACTIVE) {
$pool->recover();
}
suspend(delay: 10000); // check every 10 seconds
}
});
参见
- Pool::activate — 强制激活
- Pool::deactivate — 强制停用
- Pool::getState — 当前状态
- Pool::setCircuitBreakerStrategy — 配置策略