danilovl / async-bundle
Symfony bundle provides simple delayed function call.
Installs: 191
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: ^8.3
- symfony/framework-bundle: ^7.0
- symfony/http-kernel: ^7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.64
- phpstan/extension-installer: ^1.4.3
- phpstan/phpstan: ^2.0.1
- phpstan/phpstan-symfony: ^2.0.0
- phpunit/phpunit: ^10.2
README
AsyncBundle
About
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.
Requirements
- PHP 8.3 or higher
- Symfony 7.0 or higher
1. Installation
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] ];
2. Usage
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'); } }
License
The AsyncBundle is open-sourced software licensed under the MIT license.