PackageTrack
Sign in Get early access

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 2025
2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 28
  1. 2.3.0 20 Apr 2025
    Release notes

    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)
    Open source →
  2. 2.2.1 23 Mar 2025
    Release notes

    Features

    • Allow thecodingmachine/safe 3 (#306)
    Open source →
  3. 2.2.0 06 Dec 2024
    Release notes

    Features

    • Use the available CPUs (#299)
    • Add support for Symfony 7 (#267)
    Open source →
  4. 2.1.2 01 Apr 2024
    Release notes

    Fixes

    • Handle the case where SERVER['PWD'] is not set (#219)
    • Do not prepend the working directory for the script path when the script path is an absolute path (#268)
    • Remove hooks API deprecations (#275)
    Open source →
  5. 2.1.1 13 Oct 2023
    Release notes

    Misc

    • Bump minimum PHP version supported to 8.1 (#207)
    • Bump minimum Symfony version supported to 5.4 (#210)
    Open source →
  6. 2.1.0 11 Dec 2022
    Release notes

    Features

    Bugfixes

    Misc

    Open source →
  7. 2.0.2 08 Dec 2022
    Release notes

    Bugfixes

    Misc

    Open source →
  8. 2.0.1 19 Nov 2022
    Release notes

    Bugfixes

    Misc

    Open source →
  9. 2.0.0 03 Nov 2022
    Release notes

    Changelog since 1.2.4:

    Highlights

    • A user-friendly BC layer
    • A new ParallelMap command as an alternative to the Parallelization trait
    • A lot more extension points, more comprehensive extension points, more user-friendly validation
    • Remove the master terminology 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 ItemBatchIterator to ChunkedItemsIterator (#69)
        • Remove ItemBatchIterator#batchSize (#68)
        • Introduce a ::fromStream() static factory which makes it more convenient to create the iterator for STDIN whilst allowing testing easily without relying on STDIN (#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)
      • ParallelizationInput:
        • Introduce ParallelizationInput::fromInput() (#74)
        • Rename ParallelizationInput::configureParallelization() to ::configureCommand() (#143)
      • InputOptionsSerializer:
        • Introduce InputOptionsSerializer (#77, #78, #79)
      • Logger:
        • Introduce a custom logger (#80)
        • Allow the logger to be overwritten (#82)
        • Make the logger as a runtime parameter (#90)
        • Add NullLogger (#116)
        • Adjust the configuration logging (#130)
      • ProcessLauncher:
        • Remove string command from ProcessLauncher (#83)
      • ParallelExecutor / ParallelExecutorFactory
        • Introduce the ParallelExecutor (#86, #103, #104)
        • Introduce the ParallelExecutorFactory (#96)
        • Minor ParallelExecutor refactoring (#98)
      • ErrorHandler
        • Add an error handler (#88)
        • Rename ItemProcessingErrorHandler into ErrorHandler (#114)
        • Add null error handler (#115)
        • Make ResetContainerErrorHandler handle any resettable service (#140)
        • Make ResetServiceErrorHandler a decorator (#153)
      • ProcessLauncher / ProcessLauncherFactory
        • Introduce a ProcessLauncherFactory (#99, #100)
        • Make the process factory and process tick extensible (#149)
      • Parallelization:
        • Remove logError property (#107)
      • Configuration:
        • Move configuration calculation to a factory (#134)
        • Refactor Configuration (#146)
      • Add a ParallelizationCommand console 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)
    Open source →
  10. 2.0.0-beta.2 30 Oct 2022 pre-release
    Release notes

    Bugfixes

    • Handle the case where no items has been returned (#178)

    Misc

    • Introduce a more convenient exception for unexpected calls (#177)
    Open source →
  11. 2.0.0-beta.1 29 Oct 2022 pre-release

    Nothing published for this version

  12. 2.0.0-beta.0 22 Oct 2022 pre-release

    Nothing published for this version

  13. 2.0.0-alpha.0 28 Sep 2022 pre-release

    Nothing published for this version

  14. 1.2.4 13 Jul 2021

    Nothing published for this version

  15. 1.2.3 11 Jul 2021

    Nothing published for this version

  16. 1.2.2 11 Jun 2020

    Nothing published for this version

  17. 1.2.1 08 Mar 2021

    Nothing published for this version

  18. 1.2.0 07 Jan 2021

    Nothing published for this version

  19. 1.1.0 11 Jun 2020

    Nothing published for this version

  20. 1.0.1 08 Jun 2020

    Nothing published for this version

  21. 1.0.0 26 May 2020

    Nothing published for this version

  22. 1.0.0-RC7 20 May 2020 pre-release

    Nothing published for this version

  23. 1.0.0-RC6 03 May 2020 pre-release

    Nothing published for this version

  24. 1.0.0-RC5 30 Apr 2020 pre-release

    Nothing published for this version

  25. 1.0.0-RC4 13 Apr 2020 pre-release

    Nothing published for this version

  26. 1.0.0-RC3 14 Feb 2020 pre-release

    Nothing published for this version

  27. 1.0.0-RC2 31 Oct 2019 pre-release

    Nothing published for this version

  28. 1.0.0-RC1 31 Oct 2019 pre-release

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive