|
@@ -3,7 +3,6 @@ namespace controllers;
|
|
|
|
|
|
use Ubiquity\orm\DAO;
|
|
use Ubiquity\orm\DAO;
|
|
use models\World;
|
|
use models\World;
|
|
-use Swoole\Coroutine as co;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
* Bench controller.
|
|
* Bench controller.
|
|
@@ -15,7 +14,7 @@ class SwooleDb extends \Ubiquity\controllers\Controller {
|
|
}
|
|
}
|
|
|
|
|
|
public function index() {
|
|
public function index() {
|
|
- $dbInstance=DAO::pool();
|
|
|
|
|
|
+ $dbInstance=DAO::pool('swoole');
|
|
$world = DAO::getById(World::class, \mt_rand(1, 10000), false);
|
|
$world = DAO::getById(World::class, \mt_rand(1, 10000), false);
|
|
DAO::freePool($dbInstance);
|
|
DAO::freePool($dbInstance);
|
|
echo \json_encode($world->_rest);
|
|
echo \json_encode($world->_rest);
|
|
@@ -24,7 +23,7 @@ class SwooleDb extends \Ubiquity\controllers\Controller {
|
|
public function query($queries = 1) {
|
|
public function query($queries = 1) {
|
|
$worlds = [];
|
|
$worlds = [];
|
|
$queries = \min(\max($queries, 1), 500);
|
|
$queries = \min(\max($queries, 1), 500);
|
|
- $dbInstance=DAO::pool();
|
|
|
|
|
|
+ $dbInstance=DAO::pool('swoole');
|
|
for ($i = 0; $i < $queries; ++ $i) {
|
|
for ($i = 0; $i < $queries; ++ $i) {
|
|
$worlds[] = (DAO::getById(World::class, \mt_rand(1, 10000), false))->_rest;
|
|
$worlds[] = (DAO::getById(World::class, \mt_rand(1, 10000), false))->_rest;
|
|
}
|
|
}
|
|
@@ -33,35 +32,16 @@ class SwooleDb extends \Ubiquity\controllers\Controller {
|
|
}
|
|
}
|
|
|
|
|
|
public function update($queries = 1) {
|
|
public function update($queries = 1) {
|
|
- \Swoole\Runtime::enableCoroutine();
|
|
|
|
- $queries = \min(\max($queries, 1), 500);
|
|
|
|
- $worlds = new co\Channel($queries);
|
|
|
|
- $count=\min(4,$queries);
|
|
|
|
- $rest=$queries%$count;
|
|
|
|
- $nb=($queries-$rest)/$count;
|
|
|
|
- for ($i = 0; $i < $nb; ++ $i) {
|
|
|
|
- $this->_update($count, $worlds);
|
|
|
|
- }
|
|
|
|
- if($rest>0){
|
|
|
|
- $this->_update($rest, $worlds);
|
|
|
|
- }
|
|
|
|
- $result=[];
|
|
|
|
- for($i=0;$i<$queries;++$i){
|
|
|
|
- $result[]=$worlds->pop();
|
|
|
|
- }
|
|
|
|
- echo \json_encode($result);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private function _update($queries,$worlds) {
|
|
|
|
- go(static function() use($queries,$worlds){
|
|
|
|
- $dbInstance=DAO::pool();
|
|
|
|
- for ($j = 0; $j < $queries; ++ $j) {
|
|
|
|
- $world = DAO::getById(World::class, \mt_rand(1, 10000), false);
|
|
|
|
- $world->randomNumber = \mt_rand(1, 10000);
|
|
|
|
- DAO::update($world);
|
|
|
|
- $worlds->push($world->_rest);
|
|
|
|
- }
|
|
|
|
- DAO::freePool($dbInstance);
|
|
|
|
- });
|
|
|
|
|
|
+ $worlds = [];
|
|
|
|
+ $queries = \min(\max($queries, 1), 500);
|
|
|
|
+ $dbInstance=DAO::pool('swoole');
|
|
|
|
+ for ($i = 0; $i < $queries; ++ $i) {
|
|
|
|
+ $world = DAO::getById(World::class, \mt_rand(1, 10000), false);
|
|
|
|
+ $world->randomNumber = \mt_rand(1, 10000);
|
|
|
|
+ DAO::update($world);
|
|
|
|
+ $worlds[]=$world->_rest;
|
|
|
|
+ }
|
|
|
|
+ DAO::freePool($dbInstance);
|
|
|
|
+ echo \json_encode($worlds);
|
|
}
|
|
}
|
|
}
|
|
}
|