Download the PHP package wwwision/batch-processing without Composer
On this page you can find all versions of the php package wwwision/batch-processing. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download wwwision/batch-processing
More information about wwwision/batch-processing
Files in wwwision/batch-processing
Package batch-processing
Short Description Execute Flow CLI commands in parallel for batch processing
License MIT
Informations about the package batch-processing
Wwwision.BatchProcessing
Helpers to execute Flow CLI Commands in parallel using ReactPHP ChildProcess:
Installation
Install this package via:
Usage
Invoke BatchProcessRunner::start()
from a Flow CommandController
.
Example:
(see full example below)
Custom batch command arguments
By default, the arguments offset
and limit
will be passed to the batch command.
This can be changed via constructor arguments of the BatchProcessRunner
, the placeholders {offset}
and {limit}
can be used:
Render progress bar(s)
The ProgressBarRenderer
can be used to output progress bar(s) like shown in the screenshot above:
To allow the individual batches to report their progress and errors, the ProgressPipe
can be used:
Specify batch size
By default, the batch size is 500.
This means that for a total amount of 1234 tasks the batch command will be called three times with a offset/limit
of:
0/500
500/500
1000/234
The batch size can be adjusted via BatchProcessRunner::setBatchSize()
.
Note: The right size for the size of a batch depends greatly upon how long each task will take and how much memory it will consume.
Specify pool size
By default, up to 5 sub processes will be executed in parallel.
This can be adjusted via BatchProcessRunner::setPoolSize()
.
Note: To prevent parallel execution of batches, set the pool size to 1
Handle finished process
Because BatchProcessRunner::start()
is executed in a non-blocking way, the following code will not work as expected:
Instead, the BatchProcessRunner::onFinish()
callback should be used to finalize the process:
Handle errors
To prevent interrupting the batch processing or messing with the progress bar rendering, errors are not outputted by default.
Instead, they can be handled via BatchProcessRunner::onError()
callback:
Alternatively, the onFinish()
can be used to handle all errors that occurred during the batch processing:
Full example
Contribution
Contributions in the form of issues or pull requests are highly appreciated
License
See LICENSE