weengsapp/asynq

异步执行 Laravel 命令

此包的官方仓库似乎已不存在,因此该包已被冻结。

1.0.0 2018-09-30 10:12 UTC

This package is not auto-updated.

Last update: 2019-12-23 19:12:36 UTC


README

CircleCI Software License

存在原因

在我们公司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