Skip to content

Commit

Permalink
Merge pull request #3 from pfig/develop
Browse files Browse the repository at this point in the history
Dancer and Mojolicious (Perl) apps.
  • Loading branch information
Pedro Figueiredo committed Apr 14, 2013
2 parents a4e3170 + 41fb02f commit ef5613c
Show file tree
Hide file tree
Showing 6 changed files with 189 additions and 0 deletions.
24 changes: 24 additions & 0 deletions dancer/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Setup

* Perl 5.16.3
* MySQL 5.5
* Wrk 2.0

# Requirements

* Dancer
* Dancer::Plugin::Database
* DBD::mysql
* Starman (if using Starman as web server)
* Plack (for plackup)
* nginx (if you want to front Dancer with nginx, nginx.conf provided)

# Deployment

Something along the lines of

plackup -E production -s Starman --workers=2 -l /tmp/frameworks-benchmark.sock -a ./app.pl

if you want to front it with nginx, otherwise

plackup -E production -s Starman --port=8080 --workers=2 -a ./app.pl
28 changes: 28 additions & 0 deletions dancer/app.pl
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/usr/bin/env perl
use strict;
use warnings;

use Dancer ':syntax';
use Dancer::Plugin::Database;
set serializer => 'JSON';

#my $dbh = database({ driver => 'mysql', database => 'test' });
my $dbh = database({ driver => 'mysql', host => 'ip-10-34-150-134.eu-west-1.compute.internal', database => 'test', username => 'root' });

get '/json' => sub {
{ message => 'Hello, World!' }
};

get '/db' => sub {
my $queries = params->{queries} || 1;
my @response;
for( 1 .. $queries ) {
my $id = int rand 10000 + 1;
if ( my $row = $dbh->quick_select( 'world', { id => $id } ) ) {
push @response, { id => $id, randomNumber => $row->{randomnumber} };
}
}
{ \@response }
};

Dancer->dance;
37 changes: 37 additions & 0 deletions dancer/nginx.conf
Original file line number Diff line number Diff line change
@@ -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;
}
}
}
32 changes: 32 additions & 0 deletions mojolicious/README.md
Original file line number Diff line number Diff line change
@@ -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 changes: 31 additions & 0 deletions mojolicious/app.pl
Original file line number Diff line number Diff line change
@@ -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 changes: 37 additions & 0 deletions mojolicious/nginx.conf
Original file line number Diff line number Diff line change
@@ -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;
}
}
}

0 comments on commit ef5613c

Please sign in to comment.