mead-steve / mon-work-go
v2.0.0
2014-04-06 12:17 UTC
Requires
- php: >=5.4
- mockery/mockery: 0.9.0
- psr/log: 1.0.0
This package is auto-updated.
Last update: 2021-03-29 06:14:17 UTC
README
在mongodb之上构建的简单工作队列。MongoDB中的一个集合用于表示一个工作队列。使用json有效载荷来描述工作,然后由提供的回调函数处理。
安装
使用composer安装此库是最简单的方法。在你的项目的composer.json文件中添加
{
"require": {
"mead-steve/mon-work-go": "2.0.*"
}
}
然后运行composer update。
排队工作
描述你工作的数据的混合数组可以排队等待处理。这将很快,这样你就可以像英雄一样响应用户。这将创建一个名为mainQueue的集合在MongoDB中(如果尚未存在)。
$manager = new \MeadSteve\MonWorkGo\Manager($mongoDB); $manager->getQueue("mainQueue") ->clearCompletedWork() // Do a bit of house keeping ->addWork(["jobOne", 34]) ->addWork([5, 7]) ->addWork([8]) ->addWork(["jobFour", "mead"]) ->addWork(["jobFive", "beer"]);
处理工作
一旦你的数据已经很好地排队,你可以花更多的时间来处理它。说实话,你可能想做的不仅仅是回显它,但这应该能给你一个想法。此脚本将无限期运行,没有阻止你在多个实例上运行以共享负载的东西。
$manager = new \MeadSteve\MonWorkGo\Manager($mongoDB); $manager->createWorker( "mainQueue", function ($payload) { echo "Hello. I'm working on: " . var_export($payload, true); return \MeadSteve\MonWorkGo\Worker::WORK_RESPONSE_SUCCESS; } )->start();
报告工作进度
工作对象还可以提供psr logger。除了向此记录器发送调试消息外,工作函数还通过第二个参数传递记录器,因此可以报告其进度。
$manager = (new \MeadSteve\MonWorkGo\Manager($mongoDB))->setLogger($logger); $manager->createWorker( "mainQueue", function ($payload, \Psr\Log\LoggerInterface $log) { $log->info("Hello logger"); $log->info("I should probably do some work"); return \MeadSteve\MonWorkGo\Worker::WORK_RESPONSE_SUCCESS; } )->start();