Установка
Пакет не тянет зависимостей: только PHP 8.4+. Swoole опционален — от его наличия зависит не работоспособность, а то, будет ли пул настоящим.
Composer
composer require flytachi/winter-cpoolТребования
| Требование | Роль |
|---|---|
| PHP 8.4+ | обязательно |
ext-swoole |
опционально — включает корутинный пул |
Runtime-зависимостей у пакета нет вовсе: ни PSR-интерфейсов, ни драйверов. Всё, что знает о базе или Redis, живёт в вашем адаптере.
Что даёт и чего не даёт Swoole
Пакет проверяет наличие расширения сам и ведёт себя по-разному:
| Рантайм | Что используется | Поведение |
|---|---|---|
| Swoole активен | ConnectionPool |
набор соединений, выдача по одному на корутину, ожидание на канале |
| Swoole нет | SingleConnection |
одно ленивое соединение с тем же контрактом |
Второй вариант — не заглушка. Под PHP-FPM или в обычном CLI-скрипте процесс обслуживает одну единицу работы за раз, и пулу нечего распределять; одно соединение с проверкой живости и сроком жизни — правильный ответ для такого рантайма.
Ветвиться в коде не нужно
Оба класса реализуют одну и ту же идею, поэтому фасад выбирает нужный один раз при инициализации, а прикладной код об этом не знает. Как это делается — в Быстром старте.
Для разработки пакета
Если вы дорабатываете сам CPool, ext-swoole уже обязателен: поведение под
конкуренцией проверяется живыми корутинами, и без расширения эти тесты не запустятся.
XDEBUG_MODE=off composer testXDEBUG_MODE=off здесь не прихоть. Наблюдатели функций Xdebug не переживают
корутинные стеки: тесты проходят, а процесс падает при завершении — отчёт говорит
OK, код возврата 139. Подробности — в CONTRIBUTING.md пакета.
Проверьте установку
<?php
require 'vendor/autoload.php';
use Flytachi\Winter\CPool\PoolPolicy;
$policy = PoolPolicy::default();
echo $policy->maximumPoolSize, PHP_EOL; // 10
echo var_export($policy->housekeepingEnabled(), true), PHP_EOL; // false
echo var_export(extension_loaded('swoole'), true), PHP_EOL;Третья строка и говорит, какой режим вам достанется: true — корутинный пул,
false — одно соединение.
Дальше
- Быстрый старт — адаптер, пул, выдача и возврат
- Свой адаптер — подробно про три метода