lukaszaleckas/laravel-concurrency

此包的最新版本(v1.0.0)没有可用的许可证信息。

v1.0.0 2023-04-15 15:29 UTC

This package is auto-updated.

Last update: 2024-09-15 18:17:55 UTC


README

安装

  1. 运行
composer require lukaszaleckas/laravel-concurrency

服务提供者应自动注册,如果没有,请将其添加到应用的 app.php

LaravelConcurrency\ConcurrencyServiceProvider::class

发布配置文件

  1. 运行迁移以创建 tasks
php artisan vendor:publish --provider="LaravelConcurrency\ConcurrencyServiceProvider"
  1. 使用示例
php artisan migrate

创建任务

创建一个任务

创建一个新的任务,该任务实现了 LaravelConcurrency\Contracts\TaskInterface

use LaravelConcurrency\Contracts\TaskInterface;

class SleepForTwoSeconds implements TaskInterface
{
    public function run(): mixed
    {
        sleep(2);
        
        return null;
    }
}

任务返回您在运行它们后想要得到的结果。这可以是你想要的一切,但需要是可序列化的。

在这个例子中,我们只返回 null

启动任务工作进程

任务由任务工作进程运行。要启动任务工作进程,请运行

php artisan concurrency:run-task-worker

一个工作进程一次只能运行一个任务。所以我们将为这个例子启动两个。

运行任务

现在并发运行这些任务中的一对

use LaravelConcurrency\Facades\Concurrency;

Concurrency::wait(
    new SleepForTwoSeconds(),
    new SleepForTwoSeconds()
)

如果你注意到,这些任务都在大约2秒内完成,这意味着它们是并发运行的。

你还应该注意到任务工作进程的日志,这些日志表明哪些任务在哪个进程中运行。