Latest on twitter:
my name is benny. find out more at bwong.net. wrote the iPhone app for Exit Strategy NYC. Narwhals are my favorite. Bold little bastards
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.
Really neat. I was going to mention how similar it looks like Rack!
crazy. Considering...PHP isn’t meant for this sort...sort of...
mention how similar it