Awesome-claude-code check-connection-pool
Analyzes PHP code for connection pool issues. Detects connection leaks, improper pool sizing, missing connection release, timeout issues.
install
source · Clone the upstream repo
git clone https://github.com/dykyi-roman/awesome-claude-code
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/dykyi-roman/awesome-claude-code "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/check-connection-pool" ~/.claude/skills/dykyi-roman-awesome-claude-code-check-connection-pool && rm -rf "$T"
manifest:
skills/check-connection-pool/SKILL.mdsource content
Connection Pool Performance Analysis
Analyze PHP code for connection pool issues and database connection management problems.
When to Use
- Reviewing database-heavy PHP applications
- Investigating connection exhaustion or memory leaks
- Auditing long-running workers (queue consumers, daemons)
- Checking Doctrine EntityManager lifecycle issues
- Reviewing HTTP client usage patterns
Analysis Approach
- Scan for connection creation patterns (PDO, Redis, Guzzle)
- Check loop bodies for repeated connection instantiation
- Verify try/finally cleanup on pool acquire/release
- Check timeout configuration on all connection types
- Review persistent connection usage and state reset
- Audit worker processes for connection refresh logic
Detection Rules
| ID | Pattern | What to Look For |
|---|---|---|
| CP-01 | Connection leak | without cleanup in exception/early-return paths |
| CP-02 | Connection in loop | // inside foreach/while |
| CP-03 | Missing timeout | PDO without , Redis without connect timeout |
| CP-04 | Persistent misuse | without shutdown cleanup |
| CP-05 | Pool exhaustion | Multiple connections opened without reuse |
| CP-06 | Missing finally | not in finally block |
| CP-07 | State not reset | Connection returned to pool with modified session state |
| CP-08 | Doctrine issues | EntityManager not cleared, long-held transactions |
| CP-09 | Worker stale conn | Long-running worker without connection refresh |
| CP-10 | HTTP no pooling | in loop, no keep-alive headers |
Grep Patterns
# New connection in loops Grep: "foreach.*\{[^}]*new PDO|while.*\{[^}]*new PDO" --glob "**/*.php" --multiline # Missing connection close Grep: "new Redis\(\)" --glob "**/*.php" # Persistent connections Grep: "ATTR_PERSISTENT" --glob "**/*.php" # Connection without timeout Grep: "new PDO\s*\([^)]+\)\s*;" --glob "**/*.php" # Static connection storage Grep: "static.*PDO|static.*connection" --glob "**/*.php"
Severity Classification
| Pattern | Severity |
|---|---|
| Connection in loop | Critical |
| Connection leak (no finally) | Critical |
| No connection timeout | Major |
| Pool exhaustion risk | Major |
| Missing connection health check | Major |
| Persistent connection misuse | Minor |
| Static connection storage | Minor |
Output Format
### Connection Pool: [Description] **Severity:** Critical/Major/Minor **Location:** `file.php:line` **Impact:** [Database overload, connection exhaustion, memory leak] **Issue:** [Description of the connection management problem] **Code:** [Problematic code snippet] **Fix:** [Proper connection management code] **Expected Improvement:** - Connection count: 100 -> 10 (pooled) - Memory usage: -50% (connections reused) - DB load: -80% (connection overhead eliminated)
References
— detailed detection patterns with code examples, secure pool implementations, health check and worker refresh patternsreferences/patterns.md