weengsapp / asynq
异步执行 Laravel 命令
此包的官方仓库似乎已不存在,因此该包已被冻结。
Requires
- php: >=7.0
- react/child-process: 0.5.*
Requires (Dev)
- laravel/framework: 5.*
- phpunit/phpunit: ^6.0
This package is not auto-updated.
Last update: 2019-12-23 19:12:36 UTC
README
存在原因
在我们公司Weengs,由于大部分服务器都是只有1个CPU的小型EC2实例,所以我们并没有从Laravel队列中获得全部好处。这意味着即使我们配置Supervisor来运行多个进程,效果也不会太大,因为1个CPU一次只能运行一个进程。
但是,现在是2018年,我们有ReactPHP来帮助我们。我们坚信,我们不应该被迫增加AWS账单以获得更好的队列处理能力,这就是我们创建Asynq
(发音为async-queue)的原因,这是一个小型的代理类,利用了ReactPHP的ChildProcess组件,使我们能够调用任何artisan命令并异步执行它们,从而显著提高了我们的队列处理能力。在Asynq
之前,我们一天中会有高峰时段的待处理队列工作,但现在不再有了。
安装
composer require weengsapp/asynq
并在app/Console/Kernel.php
中注册命令
protected $commands = [ \Weengs\Asynq::class ];
用法
将其用作代理以调用任何artisan命令
php artisan weengs:asynq 4 queue:work
其中4
是要运行的进程数量,queue:work
是要调用的命令的签名。
所有命令选项都将转发到代理命令
例如,php artisan weengs:asynq 4 queue:work --env=development
等同于 php artisan queue:work --env=development
。
限制
目前,我们不转发命令参数,只转发选项。
如何贡献
欢迎提交拉取请求 :)
许可证
MIT