sadovnik / beanstalk-yii2
为 Yii Framework 2 的 Beanstalk 组件
Requires
- php: >=5.4.0
- davidpersson/beanstalk: *
- yiisoft/yii2: *
- yiisoft/yii2-composer: *
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2024-09-23 14:44:18 UTC
README
这是一个对 https://github.com/sergebezborodov/beanstalk-yii2 的临时分支
#Beanstalk Worker App for Yii2
这是什么?
查询是任何大型项目的重要组成部分。我过去的项目中使用了 Gearman 多年,当我开始开发 hotwork.ru 时,我阅读了大量关于不同查询系统的文章。最终我选择了 beanstalk - 它受到 memcache 协议的启发,它简单、快速且稳定。Beanstalk 在我的服务器上运行了三个月以上,从未重启。对于 rabbitmq 来说,这将是不可思议的。
如何安装
通过 composer 安装,添加到 composer.json
"sergebezborodov/beanstalk-yii2": "dev-master"
如何配置
要使用任何查询系统,您必须创建工作应用程序。它必须永久运行(在屏幕或 supervisor 上)并监听 beanstalk 服务器。客户端应用程序将任务设置到服务器,服务器调用工作应用程序执行。
创建工作文件,与控制台相同
#!/usr/bin/env php <?php $shared = require '...'; // load shared config of your app $worker = require '..../worker.php'; // worker app config $config = yii\helpers\ArrayHelper::merge($shared, $worker); $application = new sergebezborodov\beanstalk\Application($config); return $application->run();
工作配置示例
<?php /** * Config for beanstalk workers */ return [ 'on beforeAction' => function () { Yii::$app->db->open(); }, 'on afterAction' => function () { Yii::$app->db->close(); }, 'exitOnDbException' => true, // sometimes db gone away, it will be good to restart worker 'components' => [ 'router' => [ 'class' => 'sergebezborodov\beanstalk\Router', 'routes' => [ // routes list, example 'import' => 'import/worker/import', 'mail' => 'mail/worker/mail', ], ], ], ];
在工人完成任务后关闭数据库连接非常重要。将所有数据库连接添加到 'on beforeAction' 和 'on afterAction' 事件中。
##如何使用 您必须用管子名称的参数启动工人,例如:./worker import - 它将处理来自 import 管道的所有任务。./worker - 它将处理来自所有可用管道的所有任务。
##处理终止信号 在执行过程中终止某些任务将导致大问题,因为应用程序处理 SIGINT 信号(Ctrl+C)并等待活动任务结束。您可以通过将 handleSignals 属性设置为 false 来禁用此行为。PHP 必须编译带有 pcntl。