lukaszaleckas / laravel-concurrency
此包的最新版本(v1.0.0)没有可用的许可证信息。
v1.0.0
2023-04-15 15:29 UTC
Requires
- php: ^8.1
- ext-json: *
- ext-pcntl: *
- laravel/framework: ^10.0
Requires (Dev)
- mockery/mockery: ^1.5
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^9.5
- slevomat/coding-standard: ^6.4
- squizlabs/php_codesniffer: ^3.6
README
安装
- 运行
composer require lukaszaleckas/laravel-concurrency
服务提供者应自动注册,如果没有,请将其添加到应用的 app.php。
LaravelConcurrency\ConcurrencyServiceProvider::class
发布配置文件
- 运行迁移以创建
tasks表
php artisan vendor:publish --provider="LaravelConcurrency\ConcurrencyServiceProvider"
- 使用示例
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秒内完成,这意味着它们是并发运行的。
你还应该注意到任务工作进程的日志,这些日志表明哪些任务在哪个进程中运行。