PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.20
Booking for Appointments and Events Calendar – Amelia v1.2.20
2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / vendor / php-http / client-common / src / HttpClientPool / LeastUsedClientPool.php
ameliabooking / vendor / php-http / client-common / src / HttpClientPool Last commit date
LeastUsedClientPool.php 3 years ago RandomClientPool.php 3 years ago RoundRobinClientPool.php 3 years ago
LeastUsedClientPool.php
46 lines
1 <?php
2
3 namespace AmeliaHttp\Client\Common\HttpClientPool;
4
5 use AmeliaHttp\Client\Common\Exception\HttpClientNotFoundException;
6 use AmeliaHttp\Client\Common\HttpClientPool;
7 use AmeliaHttp\Client\Common\HttpClientPoolItem;
8
9 /**
10 * LeastUsedClientPool will choose the client with the less current request in the pool.
11 *
12 * This strategy is only useful when doing async request
13 *
14 * @author Joel Wurtz <joel.wurtz@gmail.com>
15 */
16 final class LeastUsedClientPool extends HttpClientPool
17 {
18 /**
19 * {@inheritdoc}
20 */
21 protected function chooseHttpClient()
22 {
23 $clientPool = array_filter($this->clientPool, function (HttpClientPoolItem $clientPoolItem) {
24 return !$clientPoolItem->isDisabled();
25 });
26
27 if (0 === count($clientPool)) {
28 throw new HttpClientNotFoundException('Cannot choose a http client as there is no one present in the pool');
29 }
30
31 usort($clientPool, function (HttpClientPoolItem $clientA, HttpClientPoolItem $clientB) {
32 if ($clientA->getSendingRequestCount() === $clientB->getSendingRequestCount()) {
33 return 0;
34 }
35
36 if ($clientA->getSendingRequestCount() < $clientB->getSendingRequestCount()) {
37 return -1;
38 }
39
40 return 1;
41 });
42
43 return reset($clientPool);
44 }
45 }
46