webmozarts/console-parallelization
Parallelize Symfony Console commands using multiple processes. A main process distributes items to child workers, restarts workers after segments to avoid slowdown, and supports batching with hooks for setup/teardown (e.g., DB flush) for faster bulk jobs.
Adopt if:
Look elsewhere if:
--cpus=1 or Windows without WSL)."This package lets us cut runtime for batch jobs by 50–80% by running CLI tasks in parallel across CPU cores—without adding complexity. For example, our monthly data import (processing 50K records) could drop from 2 hours to 30 minutes. It’s a drop-in upgrade for existing Symfony commands, requiring zero architectural changes. The MIT license and active maintenance make it a low-risk investment."
*"Need to speed up slow Symfony commands? This library parallelizes Console commands by splitting work into segments/batches and distributing them across processes. Key benefits:
runAfterBatch() for Doctrine transactions).ParallelCommand/Parallelization trait.Example: Turn this:
# 10 minutes
bin/console import:users --limit=10000
into this:
# 2 minutes (with --processes=4)
bin/console import:users
Tradeoff: Processes are stateless—refactor shared services to use subscribed services or DI."*
*"Parallelize ETL, migrations, or report generation without rewriting logic. For instance, parallelize:
fetchItems() → yield rows, runSingleCommand() → insert).batchSize=100).runBeforeBatch() to initialize HTTP clients per process).
Caveat: Avoid parallelizing commands with global state (e.g., cached configs)."*How can I help you explore Laravel packages today?