danilovl/async-bundle 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

danilovl/async-bundle

最新稳定版本:v0.4.7

Composer 安装命令:

composer require danilovl/async-bundle

包简介

Symfony bundle provides simple delayed function call.

README 文档

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.

Alt text

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

Alt text

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.

统计信息

  • 总下载量: 229
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-04-18