#!/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(); 
 
 |