This bundle allows you to execute methods of your services asynchronously in a background process
Download using composer
composer require krlove/async-service-call-bundle
Enable the bundle at AppKernel
$bundles = [
...
new Krlove\AsyncServiceCallBundle\KrloveAsyncServiceCallBundle(),
]
Options:
console_path
- path toconsole
script. Can be absolute or relative tokernel.root_dir
parameter's value. Defaults toapp/console
for Symfony 2.* andbin/console
for Symfony 3.*.php_path
- path to php executable. If no option provided in configuration,Symfony\Component\Process\PhpExecutableFinder::find
will be used to set it up.
Example:
# config.yml
krlove_async_service_call:
console_path: bin/console
php_path: /usr/local/bin/php
Define any service
<?php
namespace AppBundle\Service;
class AwesomeService
{
public function doSomething($int, $string, $array)
{
// do something heavy
sleep(10)
}
}
Register service
# services.yml
services:
app.service.awesome:
class: AppBundle\Service\AwesomeService
public: true
make sure your service is configured with
public: true
Execute doSomething
method asynchronously:
$this->get('krlove.async')
->call('app.service.awesome', 'doSomething', [1, 'string', ['array']);
Line above will execute AppBundle\Service\AwesomeService::doSomething
method by running krlove:service:call
command in asynchronous Symfony\Component\Process\Process
.
Process PID will be returned on success, null
on failure.