Browse Source

Fix laravel & Laravel-swoole cache pbs (#5233)

* Test with unique random numbers

* slight opt

* remove dbl quotes

* Remove const params in getUniqueRandomNumbers
jcheron 5 years ago
parent
commit
03c68b500a

+ 26 - 17
frameworks/PHP/laravel/app/Http/Controllers/Controller.php

@@ -1,5 +1,4 @@
 <?php
-
 namespace App\Http\Controllers;
 
 use App\Models\Fortune;
@@ -9,19 +8,20 @@ use Illuminate\Routing\Controller as BaseController;
 class Controller extends BaseController {
 
 	public function json() {
-		return ['message' => 'Hello, World!'];
+		return [
+			'message' => 'Hello, World!'
+		];
 	}
 
 	public function db() {
-		return World::find(random_int(1, 10000));
+		return World::find(\mt_rand(1, 10000));
 	}
 
 	public function queries($queries = 1) {
-		$queries = $this->clamp($queries);
-
 		$rows = [];
-		while ($queries--) {
-			$rows[] = World::find(random_int(1, 10000));
+		$numbers = $this->getUniqueRandomNumbers($this->clamp($queries));
+		foreach ($numbers as $id) {
+			$rows[] = World::find($id);
 		}
 
 		return $rows;
@@ -32,22 +32,23 @@ class Controller extends BaseController {
 
 		$insert = new Fortune();
 		$insert->id = 0;
-		$insert->message = "Additional fortune added at request time.";
+		$insert->message = 'Additional fortune added at request time.';
 
 		$rows->add($insert);
-		$rows = $rows->sortBy("message");
+		$rows = $rows->sortBy('message');
 
-		return view("fortunes", ["rows" => $rows]);
+		return view('fortunes', [
+			'rows' => $rows
+		]);
 	}
 
 	public function updates($queries = 1) {
-		$queries = $this->clamp($queries);
-
 		$rows = [];
 
-		while ($queries--) {
-			$row = World::find(random_int(1, 10000));
-			$row->randomNumber = random_int(1, 10000);
+		$numbers = $this->getUniqueRandomNumbers($this->clamp($queries));
+		foreach ($numbers as $id) {
+			$row = World::find($id);
+			$row->randomNumber = \mt_rand(1, 10000);
 			$row->save();
 
 			$rows[] = $row;
@@ -57,11 +58,11 @@ class Controller extends BaseController {
 	}
 
 	public function plaintext() {
-		return response("Hello, World!")->header('Content-Type', 'text/plain');
+		return response('Hello, World!')->header('Content-Type', 'text/plain');
 	}
 
 	private function clamp($value): int {
-		if (!is_numeric($value) || $value < 1) {
+		if (! \is_numeric($value) || $value < 1) {
 			return 1;
 		} else if ($value > 500) {
 			return 500;
@@ -69,4 +70,12 @@ class Controller extends BaseController {
 			return $value;
 		}
 	}
+
+	private function getUniqueRandomNumbers($count) {
+		$res = [];
+		do {
+			$res[\mt_rand(1, 10000)] = 1;
+		} while (\count($res) < $count);
+		return \array_keys($res);
+	}
 }

+ 3 - 4
frameworks/PHP/laravel/app/Models/Fortune.php

@@ -1,12 +1,11 @@
 <?php
-
 namespace App\Models;
 
 use Illuminate\Database\Eloquent\Model;
 
 class Fortune extends Model {
 
-	protected $table = "Fortune";
+	protected $table = 'Fortune';
+
 	public $timestamps = false;
-	
-}
+}

+ 3 - 4
frameworks/PHP/laravel/app/Models/World.php

@@ -1,12 +1,11 @@
 <?php
-
 namespace App\Models;
 
 use Illuminate\Database\Eloquent\Model;
 
 class World extends Model {
 
-	protected $table = "World";
-	public $timestamps = false;
+	protected $table = 'World';
 
-}
+	public $timestamps = false;
+}