Browse Source

Merge pull request #2 from pfig/feature/mojolicious

Mojolicious (Perl) app
Pedro Figueiredo 12 years ago
parent
commit
b56ccf4589
3 changed files with 100 additions and 0 deletions
  1. 32 0
      mojolicious/README.md
  2. 31 0
      mojolicious/app.pl
  3. 37 0
      mojolicious/nginx.conf

+ 32 - 0
mojolicious/README.md

@@ -0,0 +1,32 @@
+# Setup
+
+* Perl 5.16.3
+* MySQL 5.5
+* Wrk 2.0
+
+# Requirements
+
+* Mojolicious
+* Mojolicious::Plugin::Database
+* DBD::mysql
+* Starman (if using Starman as web server)
+* Plack (for plackup)
+* nginx (if you want to front Mojolicious
+with nginx, nginx.conf provided)
+* Morbo and Hypnotoad provided by Mojolicious
+
+# Deployment
+
+Set production mode:
+
+    export MOJO_MODE=production
+
+Something along the lines of
+
+    plackup -s Starman --workers=2 -l /tmp/frameworks-benchmark.sock -a ./app.pl
+
+if you want to front it with nginx, otherwise
+
+    plackup -s Starman --port 8080 --workers=2 -a ./app.pl
+
+or the equivalent Morbo or Hypnotoad commands.

+ 31 - 0
mojolicious/app.pl

@@ -0,0 +1,31 @@
+#!/usr/bin/env perl
+use Mojolicious::Lite;
+use Mojolicious::Plugin::Database;
+
+plugin 'database', {
+    dsn      => 'dbi:mysql:dbname=test',
+    username => 'root',
+    password => ''
+};
+
+get '/json' => sub {
+    my $self = shift;
+    $self->render( json => { message => 'Hello, world!' } );
+};
+
+get '/db' => sub {
+    my $self = shift;
+    my $queries = $self->param('queries') || 1;
+    my @response;
+    my $sth = $self->db->prepare( 'SELECT randomnumber FROM world WHERE id = ?' );
+    for ( 1 .. $queries ) {
+        my $id = int rand 10000 + 1;
+        my $res = $sth->execute( $id );
+        if ( my $row = $sth->fetchrow_arrayref ) {
+            push @response, { id => $id, randomNumber => $row->[0] };
+        }
+    }
+    $self->render( json => \@response );
+};
+
+app->start;

+ 37 - 0
mojolicious/nginx.conf

@@ -0,0 +1,37 @@
+user www;
+
+worker_processes 2;
+
+events {
+  worker_connections  1024;
+}
+
+http {
+  output_buffers   1 32k;
+  postpone_output  1460;
+
+  sendfile         on;
+  tcp_nopush       on;
+
+  tcp_nodelay      on;
+
+  upstream backendurl {
+    server unix:/tmp/frameworks-benchmark.sock;
+  }
+
+  server {
+    listen 8888;
+    server_name localhost;
+
+    location / {
+      try_files $uri @proxy;
+      access_log off;
+      expires max;
+    }
+
+    location @proxy {
+      proxy_set_header Host $http_host;
+      proxy_pass http://backendurl;
+    }
+  }
+}