webmozarts/console-parallelization
Enables parallelization of Symfony Console commands
2.3.0
3.9M downloads/mo
#3049 most downloaded on Packagist
webmozarts/console-parallelization
What this package is like to depend on
Last release 1 years ago
20 Apr 2025
Release timing varies
gaps range from 2 weeks to 1.2 years
Some releases are documented
notes for 9 of 17 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
28 releases · first in 2019
0 releases in the last 12 months
see the full history below
Release timeline
28 releases · Oct 2019 to Apr 2025Releases
latest 28-
2.3.020 Apr 2025Release notes
Open source →Features
- Drop support for PHP 8.1 and 8.2 (#309)
- Make the PHP executable into an array which allows to configure the PHP executable for child processes (#314, #329)
Fixes
- Fix the forwarding of array options (#326)
- Fix the double escaping done to options passed to the child process (#325)
- Harden the handling of non-rewindable generators and non-array keys (#330)
Misc
- Bump dependency constraints (#313)
-
2.2.123 Mar 2025 -
2.2.006 Dec 2024 -
2.1.201 Apr 2024 -
2.1.113 Oct 2023 -
2.1.011 Dec 2022 -
2.0.208 Dec 2022 -
2.0.119 Nov 2022 -
2.0.003 Nov 2022Release notes
Open source →Changelog since 1.2.4:
Highlights
- A user-friendly BC layer
- A new
ParallelMapcommand as an alternative to theParallelizationtrait - A lot more extension points, more comprehensive extension points, more user-friendly validation
- Remove the
masterterminology usage - Allow the processing of an unknown number of items
- Guesses the maximum number of parallel processes it can use (no longer need to pass
processes=X) - Allow the library to be used in a non-Symfony app context
This release contains a number of BC breaks, they should all be explained in UPGRADE.md.
Features
- Remove support for PHP 7.3 (#57)
- Remove support for Symfony 3, 4.x except 4.4, 5.x except 5.4 (#57, #60, #61)
- Rework in depth the codebase to provide more re-usable and testable pieces
- Modernize the codebase via PHPStan/PHPStorm (#70, #71, #72)
ItemBatchIterator/ChunkedItemsIterator:- Rename
ItemBatchIteratortoChunkedItemsIterator(#69) - Remove
ItemBatchIterator#batchSize(#68) - Introduce a
::fromStream()static factory which makes it more convenient to create the iterator forSTDINwhilst allowing testing easily without relying onSTDIN(#75) - Rename
::create()to::fromItemOrCallable()(#75) - Move the normalization of items from
__construct()to the static factories, this makes testing a lot easier (#75) - Simplify some tests: when testing the static factories we are only interested in the items themselves since the batchSize is just forwarded. The chunk logic is tested when testing the constructor directly (#75)
- Rename
ParallelizationInput:InputOptionsSerializer:Logger:ProcessLauncher:- Remove string command from ProcessLauncher (#83)
ParallelExecutor/ParallelExecutorFactoryErrorHandlerProcessLauncher/ProcessLauncherFactoryParallelization:- Remove logError property (#107)
Configuration:- Add a
ParallelizationCommandconsole command (#121) ChildCommandFactory:- Extract child command factory into a class (#157)
- Add a dot at the end of each exception message sentence (#73)
- Remove dependencies to the Container (#88, #91, #92, #95, #109, #111)
- Allow a unknown count of items (#128)
- Automatically set the maximum number of processes to use (#137)
- Always do processing in child processes unless --main-process is passed (#138)
- Add a more friendly BC layer (#139)
- Limit the number of parallel processes (#147)
- Ensures the item is processed in the main process when given (#145)
- Keep track of the exit codes (#154)
- Pass output to the logger factory (#156)
- Always pass the full IO (#167)
- Improve Logger docs and re-order the methods (#169)
- Rename logger methods (#170)
- Handle negative process exit code (#171)
- Improve the Logger API (#168)
- Forward the child process output type to the logger (#174)
- Rework the output (#166)
- Update parallelization input arguments and options description (#175)
- Add batch and segment size options (#163)
Bugfixes
- Fix the handling of negatable options when forwarding the options to the child process(es) (#77, #123)
- Fix the options quoting detection when forwarding the options to the child process(es) (#77)
- Fix the forwarding of options: do not forward non given options (#81)
- Fix the support of resettable containers and more generally resettable services (#88)
- Prevent an item to be passed to a child process via the argument (#126)
- Fix the calculation of the segment size (#132)
- Fix the calculation of the batch size (#132)
- Use the validated/calculated segment size instead of the user configured one (#133)
- Ensure the items do not contain new lines (#148)
- Fix child command generation if the command or item argument are not passed as the first argument (#158)
- Do not forward default arguments to the child process(es) (#158)
- Properly escape the PHP executable (#162)
- Handle the case where no items has been returned (#178)
Misc
- Migrate from Travis CI to GitHub Actions (#56)
- Rework the initial CI to an acceptable state (#62, #13, #64, #65)
- Update CS (#58, #59, #63, #66, #108, #125)
- Improve the developer development experience with the Makefile (#84, #101, #159, #161)
- Upgrade to PHPUnit 9 (#85)
- Add infection (#89)
- Simplify the passed environment variables (#91)
- Rename PHP executable finder (#93)
- Pass progress symbol as a parameter instead of part of the constructor (#97)
- Add a variety of tests and make the tests more robust (#102, #124, #141)
- Add missing tests to reach 100% code coverage (#105)
- Fix issues pointed by Infection (#106)
- Move Inputs related classes under an Input namespace (#110)
- Remove references to "master" (#118)
- Add code of conduct (#119)
- Checks the Symfony different version compatibilies in the CI (#122, #123)
- Rename "number of batches" to "total number of batches" (#131)
- Split the PHPStan configuration (#135)
- Go to a higher level for PHPStan (#127)
- Add a test script to check how it works with no framework (#142)
- Remove legacy container tests (#144)
- Add @internal tag (#150)
- Restore default batch size configuration (#151)
- Remove obsolete TODOs (#152, #155)
- Add a method to get the input raw arguments (#160)
- Add missing @internal tags (#165)
- Fix PHPUnit coverage (#172)
- Fix flaky tests (#173)
- Introduce a more convenient exception for unexpected calls (#177)
-
2.0.0-beta.230 Oct 2022 pre-releaseRelease notes
Open source →Bugfixes
- Handle the case where no items has been returned (#178)
Misc
- Introduce a more convenient exception for unexpected calls (#177)
-
2.0.0-beta.129 Oct 2022 pre-releaseNothing published for this version
-
2.0.0-beta.022 Oct 2022 pre-releaseNothing published for this version
-
2.0.0-alpha.028 Sep 2022 pre-releaseNothing published for this version
-
1.2.413 Jul 2021Nothing published for this version
-
1.2.311 Jul 2021Nothing published for this version
-
1.2.211 Jun 2020Nothing published for this version
-
1.2.108 Mar 2021Nothing published for this version
-
1.2.007 Jan 2021Nothing published for this version
-
1.1.011 Jun 2020Nothing published for this version
-
1.0.108 Jun 2020Nothing published for this version
-
1.0.026 May 2020Nothing published for this version
-
1.0.0-RC720 May 2020 pre-releaseNothing published for this version
-
1.0.0-RC603 May 2020 pre-releaseNothing published for this version
-
1.0.0-RC530 Apr 2020 pre-releaseNothing published for this version
-
1.0.0-RC413 Apr 2020 pre-releaseNothing published for this version
-
1.0.0-RC314 Feb 2020 pre-releaseNothing published for this version
-
1.0.0-RC231 Oct 2019 pre-releaseNothing published for this version
-
1.0.0-RC131 Oct 2019 pre-releaseNothing published for this version