- The app stays in memory between requests — prevent memory leaks by avoiding unbounded array/object growth.
- Close database connections properly — Doctrine/Eloquent must not keep stale connections between requests.
- Avoid global state that persists between requests — use coroutine-local context instead.
- Use Laravel Octane or Symfony Runtime for framework integration with Swoole/RoadRunner.
- Use coroutines (`go()` / `Swoole\Coroutine::create()`) for concurrent I/O operations.
- Use `Swoole\Table` for shared memory data structures between workers.
- Use connection pooling for databases — don't create new connections per request.
- Implement graceful shutdown handlers to clean up resources when workers restart.
- Use `Swoole\Timer` for periodic tasks instead of cron-based approaches.