Introducing Kelpie
So call me crazy.. but I thought it would be a good idea to write a little web server in PHP.
I’d like to think that it’s fast, lightweight and hard working. :-)
Ok, show me the code
1 class HelloWorld
2 {
3 public function call($env)
4 {
5 return array(
6 200,
7 array("Content-Type" => "text/plain"),
8 array("hello world")
9 );
10 }
11 }This is what a simple Kelpie web app looks like.
The call method accepts an array of CGI like environment variables and returns an array of 3 items:
Status code Headers as array(key => value) Body text as an array (or Iterator) of strings To actually run a Kelpie app, you need to start up a server:
1 $server = new Kelpie_Server('0.0.0.0', 8000);
2 $server->start(new HelloWorld());There’s not really much more to it at the moment, I’m hoping to build a more fully featured framework on top of this.
For now I’m just having fun dabbling in writing server apps. :-D
Credits
I can’t really claim much credit I’m afraid, I haven’t really done anything original here.
Most of the code is based on the Ruby Thin web server. I also copied the Rack web server interface as you may have noticed. ;-)
I started out this project by writing a PHP extension for the Mongrel http parser.
The httpparser PHP extension code is based on this tutorial and I also used the Python bindings as a guide. It could really do with some code review, my C is a bit rusty..Download
The code is @ github. Feedback is welcome.
Ok, crazy. Considering the base of PHP isn’t meant for this sort of hammering, I’m looking forward to killing this sort of thing like crazy when 20 users at once deploy them on a shared hosting machine.
Welcome to Hell. Population: Me.
-
joshbenham liked this
-
thoughtjar reblogged this from dhotson and added:
crazy. Considering...PHP isn’t meant for this sort...sort of...
-
bdotdub reblogged this from dhotson and added:
mention how similar it
-
pims reblogged this from dhotson
-
pims liked this
-
strake liked this
-
matmubuggy liked this
-
dhotson posted this
