Symfony bundle provides simple delayed function call in AsyncListener after symfony send response.
The user gets a response faster because all unnecessary logic is processed later. For example: logging, creating rabbitmq queues or other unnecessary things.

The user receives a response from the server much earlier and does not wait until unnecessary processes are finished.

Install danilovl/async-bundle package by Composer:
composer require danilovl/async-bundle
Add the AsyncBundle to your application's bundles if does not add automatically:
<?php
// config/bundles.php
return [
// ...
Danilovl\AsyncBundle\AsyncBundle::class => ['all' => true]
];
AsyncService has simple three methods add, remove and reset.
<?php declare(strict_types=1);
namespace App\Controller;
use Danilovl\AsyncBundle\Attribute\PermissionMiddleware;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\{
Request,
Response
};
class HomeController extends AbstractController
{
public function __construct(private AsyncService $asyncService)
{
}
public function index(Request $request): Response
{
$this->asyncService->add(function () {
// add callback with priority 0 and without name
});
$this->asyncService->add(function () {
// add callback with priority 10
// higher means sooner
}, 10);
$this->asyncService->add(function () {
// add callback with priority -10
// less means later
}, -10);
$this->asyncService->add(function () {
// add callback with priority and name
}, 90, 'sendEmail');
$this->asyncService->add(function () {
// add second callback with priority and same name
}, 100, 'sendEmail');
// remove all callbacks with name 'sendEmail'
$this->asyncService->remove(['sendEMail']);
// remove all callbacks with name 'sendEmail' and priority
$this->asyncService->remove(['sendEMail'], 100);
// remove all callbacks
$this->asyncService->reset();
return $this->render('home/index.html.twig');
}
}
The AsyncBundle is open-sourced software licensed under the MIT license.
How can I help you explore Laravel packages today?