DbMongo.php 974 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace controllers;
  3. use Ubiquity\orm\DAONosql;
  4. use Ubiquity\orm\core\prepared\DAONosqlPreparedQueryById;
  5. use models\World;
  6. /**
  7. * Bench controller.
  8. */
  9. class DbMongo extends Db_ {
  10. public static function warmup() {
  11. self::$pDao = new DAONosqlPreparedQueryById('models\\World');
  12. }
  13. public function update($queries = 1) {
  14. $worlds = [];
  15. $count = \min(\max((int) $queries, 1), 500);
  16. $ids = $this->getUniqueRandomNumbers($count);
  17. foreach ($ids as $id) {
  18. $world = self::$pDao->execute([
  19. 'id' => $id
  20. ]);
  21. do {
  22. $nRn = \mt_rand(1, 10000);
  23. } while ($world->randomNumber == $nRn);
  24. $world->randomNumber = $nRn;
  25. DAONosql::toUpdate($world);
  26. $worlds[] = $world->_rest;
  27. }
  28. DAONosql::flush(World::class, false);
  29. echo \json_encode($worlds);
  30. }
  31. private function getUniqueRandomNumbers($count) {
  32. $res = [];
  33. do {
  34. $res[\mt_rand(1, 10000)] = 1;
  35. } while (\count($res) < $count);
  36. \ksort($res);
  37. return \array_keys($res);
  38. }
  39. }