fereydooni/laravel-async-flow
Composer 安装命令:
composer require fereydooni/laravel-async-flow
包简介
A robust and feature-rich asynchronous programming capability for Laravel using PHP attributes
README 文档
README
A robust and feature-rich asynchronous programming capability for Laravel using PHP attributes.
Installation
composer require fereydooni/laravel-async-flow
The package will automatically register its service provider if you're using Laravel 5.5+.
Publish the configuration file:
php artisan vendor:publish --provider="AsyncFlow\Providers\AsyncFlowServiceProvider"
Run the migrations:
php artisan migrate
Requirements
- PHP 8.1+
- Laravel 10.x
- Queue driver configured (Redis recommended)
Usage
Define Async Methods
Use the Async attribute to mark methods for asynchronous execution:
use AsyncFlow\Attributes\Async; use AsyncFlow\Attributes\AsyncHandler; class TaskService { #[Async(queue: 'high', delay: 10, tries: 3, timeout: 120)] public function processData($data) { // Heavy computation or API call return $data * 2; } #[AsyncHandler(event: 'success')] public function handleSuccess($result) { Log::info('Task succeeded with result: ' . $result); } #[AsyncHandler(event: 'failed')] public function handleFailure($exception) { Log::error('Task failed: ' . $exception->getMessage()); } }
Dispatch Async Tasks
use AsyncFlow\AsyncManager; // Inject the AsyncManager $manager = app(AsyncManager::class); // Dispatch an async task $task = $manager->dispatch(TaskService::class, 'processData', [10]); // Get task status $status = $manager->getTaskStatus($task->id); // 'pending', 'running', 'completed', 'failed' // Get task result (only available if task is completed) $result = $manager->getTaskResult($task->id); // Returns 20 if completed
Async HTTP Requests
use AsyncFlow\Attributes\Async; class ApiService { #[Async(queue: 'api')] public function fetchData($url) { return Http::get($url)->json(); } }
Configuration
The configuration file (config/async-flow.php) allows you to:
- Enable/disable async execution globally
- Set default queue, delay, tries, and timeout settings
- Configure queue driver
- Set log storage backend
Available Attribute Options
Async Attribute
queue(string): The queue to use (default: 'default')delay(int): Seconds to delay execution (default: 0)tries(int): Maximum retry attempts (default: 3)timeout(int): Maximum execution time in seconds (default: 60)
AsyncHandler Attribute
event(string): Event type to handle ('success', 'failed', default: 'success')callback(string): Optional callback method/function
Testing
composer test
License
This package is open-sourced software licensed under the MIT license.
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-04-24