Agent Skills: PHP Concurrency

Implement concurrency and non-blocking I/O in modern PHP. Use when implementing concurrent requests, async processing, or non-blocking I/O in PHP. (triggers: **/*.php, Fiber, suspend, resume, non-blocking, async)

UncategorizedID: hoangnguyen0403/agent-skills-standard/php-concurrency

Install this agent skill to your local

pnpm dlx add-skill https://github.com/HoangNguyen0403/agent-skills-standard/tree/HEAD/skills/php/php-concurrency

Skill Files

Browse the full folder contents for php-concurrency.

Download Skill

Loading file tree…

skills/php/php-concurrency/SKILL.md

Skill Metadata

Name
php-concurrency
Description
"Implement concurrency and non-blocking I/O in modern PHP. Use when implementing concurrent requests, async processing, or non-blocking I/O in PHP. (triggers: **/*.php, Fiber, suspend, resume, non-blocking, async)"

PHP Concurrency

Priority: P2 (MEDIUM)

Structure

See implementation examples for directory layout.

Implement PHP Fibers (8.1+)

  • Multitasking: Use new Fiber() for low-level cooperative multitasking.
  • Yielding Control: Use Fiber::suspend('paused') to yield execution back to the caller.
  • Resuming: Call $fiber->resume('hello') to continue execution. Catch exceptions via $fiber->getReturn().
  • Isolation: Use separate PDO connections per Fiber to avoid shared mutable state.

See implementation examples for Fiber cooperative multitasking code.

Configure Non-blocking I/O & Event Loops

  • Loop Setup: Use ReactPHP or Amp. Call Loop::get() to access the event loop.
  • HTTP Clients: Use react/http or the Guzzle Pool($client, ...) for concurrent requests.
  • I/O Safety: Never use blocking file_get_contents or sleep() inside a Fiber or EventLoop.
  • Entry Point: Run Loop::run() at your application entry point to start the async loop.

See implementation examples for concurrent HTTP requests with Guzzle Pool.

Choose Concurrency Strategies

  • Queued Jobs: For heavy concurrency, prefer Laravel Horizon or Symfony Messenger over raw PHP Fibers.
  • Self-Contained Logic: Ensure Fibers manage their own state and exceptions to prevent cross-contamination.

Anti-Patterns

  • No deeply nested Fiber suspends: Keep Fiber logic traceable.
  • No blocking I/O inside Fibers: Use async-compatible libraries.
  • No custom scheduler code: Use Amp or ReactPHP instead.

References