Browse Source

update Improvement (Ubiquity) (#5449)

jcheron 5 years ago
parent
commit
bfe369eaea

+ 18 - 3
frameworks/PHP/ubiquity/app/controllers/Db.php

@@ -35,15 +35,30 @@ class Db extends \Ubiquity\controllers\Controller {
 
 	public function update($queries = 1) {
 		$worlds = [];
+
 		$queries = \min(\max($queries, 1), 500);
-		for ($i = 0; $i < $queries; ++ $i) {
+		$ids = $this->getUniqueRandomNumbers($queries);
+		foreach ($ids as $id) {
 			$world = SDAO::getById(World::class, [
-				'id' => \mt_rand(1, 10000)
+				'id' => $id
 			]);
 			$world->randomNumber = \mt_rand(1, 10000);
-			SDAO::update($world);
+			SDAO::toUpdate($world);
 			$worlds[] = $world->_rest;
 		}
+		SDAO::updateGroups($queries);
+
 		echo \json_encode($worlds);
 	}
+
+	private function getUniqueRandomNumbers($count) {
+		$res = [];
+		do {
+			$res[\mt_rand(1, 10000)] = 1;
+		} while (\count($res) < $count);
+
+		\ksort($res); // prevent deadlocks (see https://github.com/TechEmpower/FrameworkBenchmarks/pull/5230#discussion_r345780701)
+
+		return \array_keys($res);
+	}
 }

+ 1 - 1
frameworks/PHP/ubiquity/app/controllers/Fortunes.php

@@ -12,7 +12,7 @@ class Fortunes extends \Ubiquity\controllers\SimpleViewController {
 
 	public function index() {
 		$fortunes = SDAO::getAll(Fortune::class);
-		$fortunes[] = (new Fortune())->setId(0)->setMessage('Additional fortune added at request time.');
+		$fortunes[] = new Fortune(0, 'Additional fortune added at request time.');
 		\usort($fortunes, function ($left, $right) {
 			return $left->message <=> $right->message;
 		});

+ 0 - 1
frameworks/PHP/ubiquity/app/controllers/SwooleDb.php

@@ -2,7 +2,6 @@
 namespace controllers;
 
 use Ubiquity\orm\DAO;
-use models\World;
 
 /**
  * Bench controller.

+ 1 - 1
frameworks/PHP/ubiquity/app/controllers/SwooleFortunes.php

@@ -7,7 +7,7 @@ class SwooleFortunes extends \Ubiquity\controllers\SimpleViewAsyncController {
 
 	public function index() {
 		$fortunes = \Ubiquity\orm\DAO::executePrepared('fortune');
-		$fortunes[] = (new Fortune())->setId(0)->setMessage('Additional fortune added at request time.');
+		$fortunes[] = new Fortune(0, 'Additional fortune added at request time.');
 		\usort($fortunes, function ($left, $right) {
 			return $left->message <=> $right->message;
 		});

+ 0 - 1
frameworks/PHP/ubiquity/app/controllers/WorkerDb.php

@@ -2,7 +2,6 @@
 namespace controllers;
 
 use Ubiquity\orm\DAO;
-use models\World;
 
 /**
  * Bench controller.

+ 1 - 1
frameworks/PHP/ubiquity/app/controllers/WorkerFortunes.php

@@ -11,7 +11,7 @@ class WorkerFortunes extends \Ubiquity\controllers\SimpleViewAsyncController {
 
 	public function index() {
 		$fortunes = \Ubiquity\orm\DAO::executePrepared('fortune');
-		$fortunes[] = (new Fortune())->setId(0)->setMessage('Additional fortune added at request time.');
+		$fortunes[] = new Fortune(0, 'Additional fortune added at request time.');
 		\usort($fortunes, function ($left, $right) {
 			return $left->message <=> $right->message;
 		});

+ 48 - 39
frameworks/PHP/ubiquity/app/models/Fortune.php

@@ -1,50 +1,59 @@
 <?php
-
 namespace models;
 
-class Fortune{
-	
+class Fortune {
+
 	/**
+	 *
 	 * @id
 	 * @column("name"=>"id","nullable"=>false,"dbType"=>"int(11)")
-	 **/
+	 */
 	public $id;
 
 	/**
+	 *
 	 * @column("name"=>"message","nullable"=>false,"dbType"=>"varchar(100)")
-	 **/
-    public $message;
-    
-
-    /**
-     * @param integer $id
-     * @return Fortune
-     */
-    public function setId($id){
-        $this->id = $id;
-        return $this;
-    }
-
-    /**
-     * @return integer
-     */
-    public function getId(){
-        return $this->id;
-    }
-
-    /**
-     * @param string $message
-     * @return Fortune
-     */
-    public function setMessage($message){
-        $this->message = $message;
-        return $this;
-    }
-
-    /**
-     * @return string
-     */
-    public function getMessage(){
-        return $this->message;
-    }
+	 */
+	public $message;
+
+	public function __construct($id = 0, $message = '') {
+		$this->id = $id;
+		$this->message = $message;
+	}
+
+	/**
+	 *
+	 * @param integer $id
+	 * @return Fortune
+	 */
+	public function setId($id) {
+		$this->id = $id;
+		return $this;
+	}
+
+	/**
+	 *
+	 * @return integer
+	 */
+	public function getId() {
+		return $this->id;
+	}
+
+	/**
+	 *
+	 * @param string $message
+	 * @return Fortune
+	 */
+	public function setMessage($message) {
+		$this->message = $message;
+		return $this;
+	}
+
+	/**
+	 *
+	 * @return string
+	 */
+	public function getMessage() {
+		return $this->message;
+	}
 }