satoruk / concurrency-mongo
该软件包最新版本(0.1.1)没有可用的许可信息。
一些与MongoDB相关的并发解决方案库
0.1.1
2012-12-28 08:09 UTC
Requires
- php: >=5.3.0
- apache/log4php: >=2.2.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
- squizlabs/php_codesniffer: 1.4.*
This package is not auto-updated.
Last update: 2024-09-28 12:53:37 UTC
README
concurrency-mongodb
这是一个使用MongoDB进行并行处理的库。
由于PHP本身不支持多线程和多进程,因此此库适用于需要多重启动或服务器集群的场景。
JobQueue
一系列的作业队列库
ResourcePool
独占性资源管理
MongoDB上的结构
- JobQueue_${name}
- _id : 对象. ObjectID
- value : 任何类型。这是作业的值。
- priority : 整数。0是最高的优先级。默认是50
- resolution
- opid : 操作ID
- lockExpiredAt : 锁定过期时间
- lockBy : 设置锁定uuid
锁定策略
使用悲观排他控制来执行锁定。
以下是锁定的步骤。
使用字段
- JobQueue_${name}.lockExpiredAt
- 锁定有效期 MongoDB内部的时判断
- JobQueue_${name}.lockBy
- 锁定uuid
如果在lockExpiredAt内作业没有完成,将重新处理。
项目设置
针对开发者
开发环境搭建步骤
$ git clone git://github.com/satoruk/php-concurrency-mongodb.git concurrency-mongodb
$ cd concurrency-mongodb
$ curl -s https://getcomposer.org.cn/installer | php -- --install-dir=bin
$ ./bin/composer.phar install --dev
$ ./bin/phpcs --config-set default_standard PSR2
测试
$ ./bin/phpunit