Benchmarking jackrabbitmvc vs Slim (PHP frameworks)

Results:

In summary, jackrabbitmvc seems over 6 times faster than Slim, the following showing average response time in microseconds.  http://use.jackrabbitmvc.com

$ cat /cygdrive/c/opt/xampp/apache/logs/access.log | grep 'slim' |

awk '{sum += $11; if (NR==50) print sum/50}'

13420.8

$ cat /cygdrive/c/opt/xampp/apache/logs/access.log | grep 'jrmvc.php' |

awk '{sum += $11; if (NR==50) print sum/50}'

2160.16

$ cat /cygdrive/c/opt/xampp/apache/logs/access.log | grep 'jrmvc-notemplate.php' |

awk '{sum += $11; if (NR==50) print sum/50}'

1960.14

Each request entailed encoding a little less than 5K of data as Json.

System:

Windows 7 Home Premium

Intel i3-3220 CPU @3.3 Ghz

6 GB Ram

Xampp-Lite, PHP Version 5.4.7

Controllers:

/bm/slim/index.php

<?php

  include('../bookopenings.inc.php');

   

  require 'Slim/Slim.php';

  \Slim\Slim::registerAutoloader();

 

  $app = new \Slim\Slim();

 

  $app->get('/bookopenings', function () {

    echo json_encode(array('bookopenings',$GLOBALS['bookOpenings']));

  });

 

  $app->run();

?>

/bm/jrmvc.php

<?php

  include('jrmvc/jackrabbitmvc.lib.php');

  include('bookopenings.inc.php');

 

  class BenchmarkXhrController extends AbstractJackRabbitController{

    function applyRequestToModel() {

        $mto = new JackRabbitMto('jrmvc/bm-template.inc');

        $mto->setModelValue('bookOpenings',$GLOBALS['bookOpenings']);

        return $mto;    

    }

  }

 

  BenchmarkXhrController::sendResponse(new BenchmarkXhrController());

?>

jrmvc/bm-template.inc

<?php

echo json_encode(array('bookopenings', $model['bookOpenings']));

?>

/bm/jrmvc-notemplate.php

<?php

  include('jrmvc/jackrabbitmvc.lib.php');

  include('bookopenings.inc.php');

 

  class BenchmarkXhrController extends AbstractJackRabbitController{

    private $bookOpenings;

   

    function applyRequestToModel() {

        $this->bookOpenings = $GLOBALS['bookOpenings'];

        return new JackRabbitMto(array($this, 'bookOpeningsJson'));    

    }

   

    function bookOpeningsJson() {

        echo json_encode(array('bookopenings', $this->bookOpenings));

    }

  }

 

  BenchmarkXhrController::sendResponse(new BenchmarkXhrController());

?>

Client/Javascript/Ajax:

<script>

    var iterations = 50;

   

    for (var i=0; i < (iterations*3); i++) {

        (function(iXhr) {

            setTimeout(function() {

                switch (iXhr%3) {

                    case 0:

                        sendJrmvcWithTemplateXhr(Math.floor(iXhr/3));

                        break;

                    case 1:

                        sendSlimNoTemplateXhr(Math.floor(iXhr/3));

                        break;

                    case 2:

                        sendJrmvcNoTemplateXhr(Math.floor(iXhr/3));

                        break;

                }

            }, i * 20);  

        })(i);

    }

   

    function sendJrmvcNoTemplateXhr(i) {

        var xhr = new XMLHttpRequest();

        xhr.open("GET", "/bm/jrmvc.php");

        xhr.send();

    }

   

    function sendSlimNoTemplateXhr(i) {

        var xhr = new XMLHttpRequest();

        xhr.open("GET", "/bm/slim/index.php/bookopenings");

        xhr.send();        

    }

   

    function sendJrmvcWithTemplateXhr(i) {

        var xhr = new XMLHttpRequest();

        xhr.open("GET", "/bm/jrmvc-notemplate.php");

        xhr.send();        

    }

</script>

Apache Log Format:

LogFormat "%h %l %u %t \"%r\" %>s %b %D"

Raw Log:

::1 - - [16/Jun/2013:15:02:01 -0500] "GET /bm/client.html HTTP/1.1" 200 1183 3000

::1 - - [16/Jun/2013:15:02:01 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 6000

::1 - - [16/Jun/2013:15:02:01 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 11001

::1 - - [16/Jun/2013:15:02:01 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 3000

::1 - - [16/Jun/2013:15:02:01 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 1000

::1 - - [16/Jun/2013:15:02:01 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 16001

::1 - - [16/Jun/2013:15:02:01 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:01 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 1000

::1 - - [16/Jun/2013:15:02:01 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 16001

::1 - - [16/Jun/2013:15:02:01 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2001

::1 - - [16/Jun/2013:15:02:01 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:01 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 16001

::1 - - [16/Jun/2013:15:02:01 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 1000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 1000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 17001

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 3001

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2001

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 12000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 3000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 12001

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 3000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 16001

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 16001

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 1000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 1000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 17001

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 3000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 3000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 16001

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 3000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 8001

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2001

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 15001

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 17001

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 3000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 3001

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 14000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 15001

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 1000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 15000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 8000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 1000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 15001

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2001

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 1000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 15001

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:02 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 9001

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2001

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 15001

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 1000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 15001

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 1000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 9001

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 1000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 15001

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 1000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 16001

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2001

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 3000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 13001

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 3000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 3000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 15001

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2001

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 15001

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 1000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 15001

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 1000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 15000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 8000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 1000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 1000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 16001

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 3000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 14001

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 16001

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2001

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 15001

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 9001

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:03 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 15000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 16001

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 16001

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2001

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 9000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 3000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 3000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 12001

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 3001

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 16001

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 1000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 15001

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 3001

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 8000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 3000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 10000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 3000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 9001

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2001

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 10000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 9001

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 2000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc-notemplate.php HTTP/1.1" 200 4768 2001

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/slim/index.php/bookopenings HTTP/1.1" 200 4768 9000

::1 - - [16/Jun/2013:15:02:04 -0500] "GET /bm/jrmvc.php HTTP/1.1" 200 4768 3000

Included Data File (bookopenings.inc.php):

<?php

$GLOBALS['bookOpenings'] = array (

  'AnderssenOpening' => '1.a3',

  'CreepyCrawlyOpening' => '1.a3 e5 2.h3 d5',

  'WareOpening' => '1.a4',

  'CrabOpening' => '1.a4 e5 2.h4',

  'DurkinsAttack' => '1.Na3',

  'DunstOpening' => '1.Nc3',

  'BattambangOpening' => '1.Nc3 e5 2. a3',

  'NovosibirskOpening' => '1.Nc3 c5 2. d4 cxd4 3. Qxd4 Nc6 4. Qh4',

  'PolishOpening' => '1.b4',

  'SaragossaOpening' => '1.c3',

  'MiesesOpening' => '1.d3',

  'VenezolanaOpening' => '1.d3 c5 2.Nc3 Nc6 3.g3',

  'ValenciaOpening' => '1.d3 e5 2.Nd2',

  'SpikeOpeningDeferred' => '1.d3 g6 2.g4',

  'VanKruijsOpening' => '1.e3',

  'BarnesOpening' => '1.f3',

  'HammerschlagOpening' => '1.f3 e5 2.Kf2',

  'AmarOpening' => '1.Nh3',

  'BenkoOpening' => '1.g3',

  'TridentOpening' => '1.g3 c5',

  'GrobOpening' => '1.g4',

  'GrobGambit' => '1.g4 d5 2.Bg2',

  'GrobGambitAccepted' => '1.g4 d5 2.Bg2 Bxg4',

  'ClemenzOpening' => '1.h3',

  'KadasOpening' => '1.h4',

  'NimzowitschLarsenAttack' => '1.b3',

  'BirdOpening' => '1.f4',

  'RetiOpening' => '1.Nf3',

  'English' => '1.c4',

  'QueensPawnGame' => '1.d4',

  'QueensPawn' => '1.d4 c6',

  'EnglundGambit' => '1.d4 e5',

  'EnglundGambitAccepted' => '1.d4 e5 2.dxe5',

  'Sicilian' => '1.e4 c5 2.Nf3 g6 3.d4 Bg7 4.c4',

  'NeoOldIndian' => '1.d4 d6',

  'Modern' => '1.d4 d6 2.c4 g6 3.Nc3 Bg7 4.e4',

  'OldBenoni' => '1.d4 c5',

  'Indian' => '1.d4 Nf6 2.f3',

  'TrompowskyOpening' => '1.d4 Nf6 2.Bg5',

  'Trompowsky' => '1.d4 Nf6 2.Bg5 d6',

  'NeoBenoni' => '1.d4 Nf6 2.Nf3 c5',

  'TorreAttack' => '1.d4 Nf6 2.Nf3 e6 3.Bg5',

  'NeoQueensIndian' => '1.d4 Nf6 2.Nf3 b6',

  'NeoKingsIndian' => '1.d4 Nf6 2.Nf3 g6',

  'BudapestDefence' => '1.d4 Nf6 2.c4 e5',

  'OldIndian' => '1.d4 Nf6 2.c4 d6',

  'Benoni' => '1.d4 Nf6 2.c4 c5',

  'BenkoGambit' => '1.d4 Nf6 2.c4 c5 3.d5 b5',

  'Dutch' => '1.d4 f5',

  'KingsPawn' => '1.e4',

  'ReversedGrob' => '1.e4 g5',

  'StGeorgeDefence' => '1.e4 a6',

  'CreepyCrawlyOpeningReversed' => '1.e4 a6 2.d4 h6',

  'OwenDefence' => '1.e4 b6',

  'NimzowitschDefence' => '1.e4 Nc6',

  'Scandinavian' => '1.e4 d5',

  'AlekhineDefence' => '1.e4 Nf6',

  'Alekhine' => '1.e4 Nf6 2.Bc4',

  'Pirc' => '1.e4 d6',

  'PircReti' => '1.e4 d6 2.Nf3 Bg4',

  'CaroKann' => '1.e4 c6',

  'SicilianDefence' => '1.e4 c5',

  'French' => '1.e4 e6',

  'OpenGame' => '1.e4 e5',

  'CentreGame' => '1.e4 e5 2.d4',

  'DanishGambit' => '1.e4 e5 2.d4 exd4 3.c3',

  'BishopsOpening' => '1.e4 e5 2.Bc4',

  'ViennaGame' => '1.e4 e5 2.Nc3',

  'Vienna' => '1.e4 e5 2.Nc3 Bb4',

  'ViennaGambit' => '1.e4 e5 2.Nc3 Nf6 3.f4',

  'KingsGambit' => '1.e4 e5 2.f4',

  'KGD' => '1.e4 e5 2.f4 Bc5 3.Bc4',

  'KingsGambitAccepted' => '1.e4 e5 2.f4 exf4',

  'KGA' => '1.e4 e5 2.f4 exf4 3.Kf2',

  'ElephantGambit' => '1.e4 e5 2.Nf3 d5',

  'LatvianGambit' => '1.e4 e5 2.Nf3 f5',

  'Latvian' => '1.e4 e5 2.Nf3 f5 3.Bc4 fxe4 4.Nxe5 Nf6',

  'PhilidorDefence' => '1.e4 e5 2.Nf3 d6',

  'Philidor' => '1.e4 e5 2.Nf3 d6 3.Bc4',

  'RussianGame' => '1.e4 e5 2.Nf3 Nf6',

  'RussianThreeKnightsGame' => '1.e4 e5 2.Nf3 Nf6 3.Nc3',

  'PonzianiOpening' => '1.e4 e5 2.Nf3 Nc6 3.c3',

  'Ponziani' => '1.e4 e5 2.Nf3 Nc6 3.c3 Nge7',

  'PonzianiCountergambit' => '1.e4 e5 2.Nf3 Nc6 3.c3 f5',

  'ScotchOpening' => '1.e4 e5 2.Nf3 Nc6 3.d4',

  'Scotch' => '1.e4 e5 2.Nf3 Nc6 3.d4 Nxd4',

  'ScotchGambit' => '1.e4 e5 2.Nf3 Nc6 3.d4 exd4 4.Bc4',

  'ThreeKnightsGame' => '1.e4 e5 2.Nf3 Nc6 3.Nc3',

  'ThreeKnights' => '1.e4 e5 2.Nf3 Nc6 3.Nc3 f5',

  'FourKnightsGame' => '1.e4 e5 2.Nf3 Nc6 3.Nc3 Nf6',

  'FourKnights' => '1.e4 e5 2.Nf3 Nc6 3.Nc3 Nf6 4.Nxe5',

  'ItalianGame' => '1.e4 e5 2.Nf3 Nc6 3.Bc4',

  'Italian' => '1.e4 e5 2.Nf3 Nc6 3.Bc4 f5',

  'GiuocoPiano' => '1.e4 e5 2.Nf3 Nc6 3.Bc4 Bc5',

  'GiuocoPianissimo' => '1.e4 e5 2.Nf3 Nc6 3.Bc4 Bc5 4.d3',

  'EvansGambit' => '1.e4 e5 2.Nf3 Nc6 3.Bc4 Bc5 4.b4',

  'EvansGambitDeclined' => '1.e4 e5 2.Nf3 Nc6 3.Bc4 Bc5 4.b4 Be7',

  'EvansGambitAccepted' => '1.e4 e5 2.Nf3 Nc6 3.Bc4 Bc5 4.b4 Bxb4',

  'TwoKnightsDefence' => '1.e4 e5 2.Nf3 Nc6 3.Bc4 Nf6',

  'TwoKnights' => '1.e4 e5 2.Nf3 Nc6 3.Bc4 Nf6 4.O-O Bc5 5.d4',

  'Spanish' => '1.e4 e5 2.Nf3 Nc6 3.Bb5',

  'HodgsonAttack' => '1.d4 d5 2.Bg5',

  'BlackmarDiemerGambit' => '1.d4 d5 2.e4',

  'BlackmarDiemer' => '1.d4 d5 2.e4 e5',

  'RichterVeresovAttack' => '1.d4 d5 2.Nc3',

  'RichterVeresov' => '1.d4 d5 2.Nc3 Nf6 3.Bf4',

  'Reti' => '1.Nf3 d5 2.g3 c5 3.Bg2 Nc6 4.d4',

  'Colle' => '1.d4 d5 2.Nf3 Nf6 3.e3 Bg4',

  'QueensGambit' => '1.d4 d5 2.c4',

  'QGD' => '1.d4 d5 2.c4 c5',

  'SlavDefence' => '1.d4 d5 2.c4 c6',

  'DiemerDuhmGambitvsSlavCaroKann' => '1.d4 d5 2.c4 c6 3.e4',

  'Slav' => '1.d4 d5 2.c4 c6 3.g3',

  'QueensGambitAccepted' => '1.d4 d5 2.c4 dxc4',

  'QGA' => '1.d4 d5 2.c4 dxc4 3.Qa4+',

  'QueensGambitDeclined' => '1.d4 d5 2.c4 e6',

  'DiemerDuhmGambit' => '1.d4 d5 2.c4 e6 3.e4',

  'DiemerDuhmGambitAccepted' => '1.d4 d5 2.c4 e6 3.e4 dxe4',

  'SemiSlav' => '1.d4 d5 2.c4 e6 3.Nc3 c6',

  'QGDTarrasch' => '1.d4 d5 2.c4 e6 3.Nc3 c5',

  'NeoGrnfeld' => '1.d4 Nf6 2.c4 g6 3.Nf3 d5',

  'GrnfeldDefence' => '1.d4 Nf6 2.c4 g6 3.Nc3 d5',

  'Grnfeld' => '1.d4 Nf6 2.c4 g6 3.Nc3 d5 4.g4',

  'NeoIndianAttack' => '1.d4 Nf6 2.c4 e6 3.Bg5',

  'Catalan' => '1.d4 Nf6 2.c4 e6 3.g3',

  'NeoIndian' => '1.d4 Nf6 2.c4 e6 3.Nf3',

  'BlumenfeldCountergambit' => '1.d4 Nf6 2.c4 e6 3.Nf3 c5 4.d5 b5',

  'Blumenfeld' => '1.d4 Nf6 2.c4 e6 3.Nf3 c5 4.d5 b5 5.dxe6',

  'BogoIndian' => '1.d4 Nf6 2.c4 e6 3.Nf3 Bb4+',

  'QueensIndian' => '1.d4 Nf6 2.c4 e6 3.Nf3 b6',

  'NimzoIndianDefence' => '1.d4 Nf6 2.c4 e6 3.Nc3 Bb4',

  'NimzoIndian' => '1.d4 Nf6 2.c4 e6 3.Nc3 Bb4 4.Qd3',

  'KingsIndian' => '1.d4 Nf6 2.c4 g6'

);

?>