| 
#!/usr/bin/env php<?php
 
 declare(ticks = 1);
 error_reporting(E_ALL);
 set_time_limit(0);
 ob_implicit_flush();
 
 require_once 'http.php';
 
 $server = new HttpServer();
 
 function sig_handler($signo)
 {
 global $server;
 $server->kill();
 }
 
 pcntl_signal(SIGTERM, 'sig_handler');
 pcntl_signal(SIGINT, 'sig_handler');
 
 $longopts = array(
 'port:',
 'webdir:',
 'pidfile:'
 );
 if (strpos(phpversion(), '5.2.') !== false) {
 $options = @getopt('p:w:P:');
 } else {
 $options = @getopt('p:w:P:', $longopts);
 }
 
 $port = 1080;
 if (isset($options['p'])) {
 $port = (int) $options['p'];
 } else if (isset($options['port'])) {
 $port = (int) $options['port'];
 }
 
 $webdir = dirname(dirname(__FILE__)).'/web';
 if (isset($options['w'])) {
 $webdir = $options['w'];
 } else if (isset($options['webdir'])) {
 $webdir = $options['webdir'];
 }
 
 if (isset($options['P'])) {
 @file_put_contents($options['P'], getmypid());
 } else if (isset($options['pidfile'])) {
 @file_put_contents($options['pidfile'], getmypid());
 }
 
 $server
 ->setPort($port)
 ->setWebDir(realpath($webdir))
 ->run();
 
 |