Browse Source

adds fortune test to slim

Keith Newman 9 years ago
parent
commit
206be57281

+ 1 - 0
frameworks/PHP/slim/benchmark_config.json

@@ -8,6 +8,7 @@
       "db_url": "/db",
       "db_url": "/db",
       "query_url": "/dbs?queries=",
       "query_url": "/dbs?queries=",
       "update_url": "/updates?queries=",
       "update_url": "/updates?queries=",
+      "fortune_url": "/fortunes",
       "port": 8080,
       "port": 8080,
       "approach": "Realistic",
       "approach": "Realistic",
       "classification": "Micro",
       "classification": "Micro",

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

@@ -1,5 +1,6 @@
 {
 {
     "require": {
     "require": {
-        "slim/slim": "3.3.0"
+        "slim/slim": "3.3.0",
+        "slim/php-view": "2.1.0" 
     }
     }
 }
 }

+ 21 - 8
frameworks/PHP/slim/index.php

@@ -4,6 +4,15 @@ error_reporting(-1);
 require_once __DIR__.'/vendor/autoload.php';
 require_once __DIR__.'/vendor/autoload.php';
 
 
 $app = new \Slim\App;
 $app = new \Slim\App;
+$container = $app->getContainer();
+$container['db'] = function ($c) {
+  $db = $c['settings']['db'];
+  $pdo = new PDO('mysql:host=127.0.0.1;dbname=hello_world', 'benchmarkdbuser', 'benchmarkdbpass');
+  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+  $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
+  return $pdo;
+};
+$container['view'] = new \Slim\Views\PhpRenderer("templates/");
 
 
 // Test 1: Plaintext
 // Test 1: Plaintext
 $app->get('/plaintext', function ($request, $response) {
 $app->get('/plaintext', function ($request, $response) {
@@ -21,14 +30,6 @@ $app->get('/json', function ($request, $response) {
         ;
         ;
 });
 });
 
 
-$container = $app->getContainer();
-$container['db'] = function ($c) {
-    $db = $c['settings']['db'];
-    $pdo = new PDO('mysql:host=127.0.0.1;dbname=hello_world', 'benchmarkdbuser', 'benchmarkdbpass');
-    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
-    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
-    return $pdo;
-};
 
 
 // Test 3: Single database query
 // Test 3: Single database query
 $app->get('/db', function ($request, $response) {
 $app->get('/db', function ($request, $response) {
@@ -91,4 +92,16 @@ $app->get('/updates', function ($request, $response) {
         ;
         ;
 });
 });
 
 
+// Test 6: Fortunes
+$app->get('/fortunes', function ($request, $response) {
+    $sth = $this->db->prepare('SELECT * FROM Fortune');
+    $sth->execute();
+    $fortunes = $sth->fetchAll();
+    array_push($fortunes, array('id'=> 0, 'message' => 'Additional fortune added at request time.'));
+    usort($fortunes, function($left, $right) {
+        return strcmp($left['message'], $right['message']);
+    });
+    return $this->view->render($response, "fortunes.phtml", ["fortunes" => $fortunes]);
+});
+
 $app->run();
 $app->run();

+ 18 - 0
frameworks/PHP/slim/templates/fortunes.phtml

@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+  <head><title>Fortunes</title></head>
+  <body>
+    <table>
+        <tr>
+            <th>id</th>
+            <th>message</th>
+        </tr>
+        <?php foreach($data['fortunes'] as $fortune){ ?>
+            <tr>
+                <td><?php echo $fortune['id']; ?></td>
+                <td><?php echo filter_var($fortune['message'], FILTER_SANITIZE_SPECIAL_CHARS); ?></td>
+            </tr>
+        <?php } ?>
+    </table>
+  </body>
+</html>