tourze/symfony-aop-pool-bundle
Composer 安装命令:
composer require tourze/symfony-aop-pool-bundle
包简介
Symfony AOP connection pool bundle for automatic resource pooling
README 文档
README
AopPoolBundle is a Symfony bundle for automatic connection pooling using AOP (Aspect-Oriented Programming). It provides efficient resource pooling for Redis, database, and custom services, improving performance and resource utilization.
Features
- Automatic lifecycle management for connections (borrow/return)
- Built-in Redis and Doctrine DBAL connection pools
- Custom poolable services via
#[ConnectionPool]attribute - Connection health checks and resource recycling
- Lazy initialization, auto-reconnect, and retry support
- Detailed logging and debug support
- Compatible with FPM and Workerman environments
Installation
- Requires PHP 8.1+, Symfony 6.4+
composer require tourze/symfony-aop-pool-bundle
Quick Start
1. Mark Custom Service for Pooling
use Tourze\Symfony\AopPoolBundle\Attribute\ConnectionPool; #[ConnectionPool] class YourService { private $connection; public function doSomething() { // Connection is automatically fetched from the pool $result = $this->connection->query(...); return $result; } }
2. Redis Connection Pool
Redis clients are automatically pooled, no extra configuration required:
class YourService { public function __construct(private \Redis $redis) {} public function doSomething() { return $this->redis->get('key'); } }
3. Database Connection Pool
Doctrine DBAL connections are automatically pooled:
use Doctrine\DBAL\Connection; class YourService { public function __construct(private Connection $connection) {} public function doSomething() { return $this->connection->executeQuery('SELECT ...'); } }
Services Automatically Pooled
- All services tagged as
snc_redis.client - All
doctrine.dbal.*_connectionservices - All services with the
#[ConnectionPool]attribute
Configuration
Add the following to your .env if you need to customize:
SERVICE_POOL_DEFAULT_SIZE=500 SERVICE_POOL_CLEANUP_INTERVAL=60 SERVICE_POOL_CONNECTION_LIFETIME=60 SERVICE_POOL_CHECK_REDIS_CONNECTION=0 DEBUG_ConnectionPoolAspect=true
Performance & Debugging Tips
- Pool only necessary services, set pool size appropriately
- Enable debug logs to monitor pool usage
- Ensure connections are properly released
Notes & Limitations
- Connections are automatically returned to the pool at the end of each request
- Pool health checks regularly recycle a small portion of connections to prevent resource exhaustion
- Default pool size: 500 (configurable)
- Max retry attempts = pool size + 1
- Pool switching in transactions is not supported
- Some special services may not be suitable for pooling
- StopWorkerException is thrown if connection fetch fails; automatic retry supported
- Reconnect attempts and intervals are configurable
- Works well in both short-lived (FPM) and long-lived (Workerman) process environments
Contributing
Please see CONTRIBUTING.md for details.
- Please use Issues for bug reports and feature requests
- Pull Requests are welcome; ensure tests and code style pass
- Follow PSR standards
License
MIT License © Tourze
Changelog
See [CHANGELOG.md] if available.
tourze/symfony-aop-pool-bundle 适用场景与选型建议
tourze/symfony-aop-pool-bundle 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 26 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 04 月 17 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 tourze/symfony-aop-pool-bundle 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 tourze/symfony-aop-pool-bundle 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 26
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 18
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-04-17