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
    }
});

参见