sergebezborodov / beanstalk-yii2
Yii Framework 2 的 Beanstalk 组件
Requires
- php: >=5.4.0
- davidpersson/beanstalk: dev-master
- yiisoft/yii2: *
- yiisoft/yii2-composer: *
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2024-09-24 02:52:34 UTC
README
#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'
事件中。
##如何使用 您必须使用 tube 名称的参数启动工人,例如:./worker import
- 它将只处理来自 import tube 的任务。./worker
- 它将处理来自所有可用 tube 的所有任务。
##处理终止信号 执行过程中终止某些任务将导致大问题,因为应用程序处理 SIGINT 信号(Ctrl+C)并等待活动任务结束。您可以通过将 handleSignals
属性设置为 false 来禁用此行为。PHP 必须与 pcntl
编译。