Browse Source

Change updates tests in workerman and php-ngx (#5217)

* Change updates test in php-ngx

* Join files in app.php

* Use prepared statements in updates

* Change composer dependencies in async

* Change variable name
Joan Miquel 5 years ago
parent
commit
d3ecfb4879

+ 14 - 15
frameworks/PHP/php-ngx/app.php

@@ -4,8 +4,11 @@ $pdo = new PDO('mysql:host=tfb-database;dbname=hello_world', 'benchmarkdbuser',
             [PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
             PDO::ATTR_EMULATE_PREPARES   => false]
         );
+
 $statement = $pdo->prepare('SELECT id,randomNumber FROM World WHERE id=?');
-$fortune = $pdo->prepare('SELECT id,message FROM Fortune');
+$fortune   = $pdo->prepare('SELECT id,message FROM Fortune');
+$random    = $pdo->prepare('SELECT randomNumber FROM World WHERE id=?');
+$update    = $pdo->prepare('UPDATE World SET randomNumber=? WHERE id=?');
 
 function db()
 {
@@ -26,7 +29,6 @@ function query()
     if ($params > 1) {
         $query_count = min($params, 500);
     }
-
     while ($query_count--) {
         $statement->execute([mt_rand(1, 10000)]);
         $arr[] = $statement->fetch();
@@ -37,7 +39,7 @@ function query()
 
 function update()
 {
-    global $pdo;
+    global $random, $update;
     ngx_header_set('Content-Type', 'application/json');
 
     $query_count = 1;
@@ -45,21 +47,18 @@ function update()
     if ($params > 1) {
         $query_count = min($params, 500);
     }
-
-    $statement = $pdo->prepare('SELECT randomNumber FROM World WHERE id=?');
-    $update    = '';
-
     while ($query_count--) {
         $id = mt_rand(1, 10000);
-        $statement->execute([$id]);
+        $random->execute([$id]);
 
-        $world = ['id' => $id, 'randomNumber' => $statement->fetchColumn()];
-        $world['randomNumber'] = mt_rand(1, 10000);
-        $update .= "UPDATE World SET randomNumber={$world['randomNumber']} WHERE id=$id;";
+        $world = ['id' => $id, 'randomNumber' => $random->fetchColumn()];
+        $update->execute(
+            [$world['randomNumber'] = mt_rand(1, 10000), $id]
+        );
 
         $arr[] = $world;
     }
-    $pdo->exec($update);
+
     echo json_encode($arr, JSON_NUMERIC_CHECK);
 }
 
@@ -80,7 +79,7 @@ function fortune()
         $html .= "<tr><td>$id</td><td>$message</td></tr>";
     }
 
-    echo    '<!DOCTYPE html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>',
-            $html,
-            '</table></body></html>';
+    echo '<!DOCTYPE html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>',
+        $html,
+        '</table></body></html>';
 }

+ 70 - 0
frameworks/PHP/workerman/app.php

@@ -0,0 +1,70 @@
+<?php
+function db()
+{
+    global $statement;
+
+    $statement->execute([mt_rand(1, 10000)]);
+    return json_encode($statement->fetch(), JSON_NUMERIC_CHECK);
+}
+
+function query()
+{
+    global $statement;
+    
+    $query_count = 1;
+    if ($_GET['q'] > 1) {
+        $query_count = min($_GET['q'], 500);
+    }
+
+    while ($query_count--) {
+        $statement->execute([mt_rand(1, 10000)]);
+        $arr[] = $statement->fetch();
+    }
+
+    return json_encode($arr, JSON_NUMERIC_CHECK);
+}
+
+function updateraw()
+{
+    global $random, $update;
+    $query_count = 1;
+    if ($_GET['q'] > 1) {
+        $query_count = min($_GET['q'], 500);
+    }
+
+    while ($query_count--) {
+        $id = mt_rand(1, 10000);
+        $random->execute([$id]);
+        $world = ['id' => $id, 'randomNumber' => $random->fetchColumn()];
+        
+        $update->execute(
+            [$world['randomNumber'] = mt_rand(1, 10000), $id]
+        );
+
+        $arr[] = $world;
+    }
+
+    return json_encode($arr, JSON_NUMERIC_CHECK);
+}
+
+function fortune()
+{
+    global $fortune;
+
+    //$fortune = $pdo->prepare('SELECT id,message FROM Fortune');
+    $fortune->execute();
+
+    $arr    = $fortune->fetchAll(PDO::FETCH_KEY_PAIR);
+    $arr[0] = 'Additional fortune added at request time.';
+    asort($arr);
+
+    $html = '';
+    foreach ($arr as $id => $message) {
+        $message = htmlspecialchars($message, ENT_QUOTES, 'UTF-8');
+        $html .= "<tr><td>$id</td><td>$message</td></tr>";
+    }
+
+    return '<!DOCTYPE html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>'
+            .$html.
+            '</table></body></html>';
+}

+ 1 - 2
frameworks/PHP/workerman/composer.json

@@ -1,6 +1,5 @@
 {
 	"require": {
-		"workerman/workerman": "dev-master",
-		"react/mysql": "^0.3.3"
+		"workerman/workerman": "dev-master"
 	}
 }

+ 0 - 25
frameworks/PHP/workerman/dbraw.php

@@ -1,25 +0,0 @@
-<?php
-function db()
-{
-    global $statement;
-
-    $statement->execute([mt_rand(1, 10000)]);
-    return json_encode($statement->fetch(), JSON_NUMERIC_CHECK);
-}
-
-function query()
-{
-    global $statement;
-    
-    $query_count = 1;
-    if ($_GET['q'] > 1) {
-        $query_count = min($_GET['q'], 500);
-    }
-
-    while ($query_count--) {
-        $statement->execute([mt_rand(1, 10000)]);
-        $arr[] = $statement->fetch();
-    }
-
-    return json_encode($arr, JSON_NUMERIC_CHECK);
-}

+ 0 - 22
frameworks/PHP/workerman/fortune.php

@@ -1,22 +0,0 @@
-<?php
-function fortune()
-{
-    global $fortune;
-
-    //$fortune = $pdo->prepare('SELECT id,message FROM Fortune');
-    $fortune->execute();
-
-    $arr    = $fortune->fetchAll(PDO::FETCH_KEY_PAIR);
-    $arr[0] = 'Additional fortune added at request time.';
-    asort($arr);
-
-    $html = '';
-    foreach ($arr as $id => $message) {
-        $message = htmlspecialchars($message, ENT_QUOTES, 'UTF-8');
-        $html .= "<tr><td>$id</td><td>$message</td></tr>";
-    }
-
-    return '<!DOCTYPE html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>'
-            .$html.
-            '</table></body></html>';
-}

+ 1 - 1
frameworks/PHP/workerman/server-async.php

@@ -5,7 +5,7 @@ use Workerman\Protocols\Http;
 use Workerman\Worker;
 
 $http_worker                = new Worker('http://0.0.0.0:8080');
-$http_worker->count         = shell_exec('nproc') * 2;
+$http_worker->count         = (int) shell_exec('nproc') * 2;
 $http_worker->onWorkerStart = static function() {
     global $mysql;
 

+ 7 - 6
frameworks/PHP/workerman/server.php

@@ -1,22 +1,23 @@
 <?php
 require_once __DIR__.'/vendor/autoload.php';
-require_once __DIR__.'/fortune.php';
-require_once __DIR__.'/dbraw.php';
-require_once __DIR__.'/updateraw.php';
+require_once __DIR__.'/app.php';
+
 use Workerman\Protocols\Http;
 use Workerman\Worker;
 
 $http_worker                = new Worker('http://0.0.0.0:8080');
-$http_worker->count         = shell_exec('nproc') * 3;
+$http_worker->count         = (int) shell_exec('nproc') * 3;
 $http_worker->onWorkerStart = function () {
-    global $pdo, $fortune, $statement;
+    global $statement, $fortune, $random, $update;
     $pdo = new PDO('mysql:host=tfb-database;dbname=hello_world',
         'benchmarkdbuser', 'benchmarkdbpass',
         [PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
         PDO::ATTR_EMULATE_PREPARES   => false]
     );
-    $fortune   = $pdo->prepare('SELECT id,message FROM Fortune');
     $statement = $pdo->prepare('SELECT id,randomNumber FROM World WHERE id=?');
+    $fortune   = $pdo->prepare('SELECT id,message FROM Fortune');
+    $random    = $pdo->prepare('SELECT randomNumber FROM World WHERE id=?');
+    $update    = $pdo->prepare('UPDATE World SET randomNumber=? WHERE id=?');
 };
 
 $http_worker->onMessage = static function ($connection) {

+ 0 - 26
frameworks/PHP/workerman/updateraw.php

@@ -1,26 +0,0 @@
-<?php
-function updateraw()
-{
-    global $pdo;
-    $query_count = 1;
-    if ($_GET['q'] > 1) {
-        $query_count = min($_GET['q'], 500);
-    }
-
-    $statement = $pdo->prepare('SELECT randomNumber FROM World WHERE id=?');
-    $update = '';
-
-    while ($query_count--) {
-        $id = mt_rand(1, 10000);
-        $statement->execute([$id]);
-        $world = ['id' => $id, 'randomNumber' => $statement->fetchColumn()];
-        
-        $world['randomNumber'] = mt_rand(1, 10000);
-        $update .= "UPDATE World SET randomNumber={$world['randomNumber']} WHERE id=$id;";
-
-        $arr[] = $world;
-    }
-    $pdo->exec($update); 
-
-    return json_encode($arr, JSON_NUMERIC_CHECK);
-}

+ 1 - 0
frameworks/PHP/workerman/workerman-async.dockerfile

@@ -17,6 +17,7 @@ COPY php.ini /etc/php/7.3/cli/php.ini
 ADD ./ /workerman
 WORKDIR /workerman
 
+RUN composer require react/mysql "^0.3.3" --quiet
 RUN composer install --optimize-autoloader --classmap-authoritative --no-dev --quiet
 
 CMD php /workerman/server-async.php start