danilovl/async-bundle

Symfony bundle provides simple delayed function call.

Maintainers

👁 danilovl

Package info

github.com/danilovl/async-bundle

Type:symfony-bundle

pkg:composer/danilovl/async-bundle

Statistics

Installs: 398

Dependents: 1

Suggesters: 1

Stars: 0

Open Issues: 0

v1.0.1 2026-02-08 18:17 UTC

Requires

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT c1a9996883969f64bc93c26fa6839c345077b717

  • Vladimir Danilov

symfonyphpbundle

This package is auto-updated.

Last update: 2026-06-08 19:04:44 UTC


README

👁 phpunit
👁 downloads
👁 latest Stable Version
👁 license

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.

👁 Profiler before

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

👁 Profiler after

Requirements

  • PHP 8.5 or higher
  • Symfony 8.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.