Gentoo solution
[mistral.git] / examples / mistral.php
blob2cc026c74c06db34fcad4d110227a9946f04fd09
1 <?php
2 class Mistral
4 public function __construct($ipaddress = '127.0.0.1', $port=8081, $keepalive=3) {
5 mistral_init($ipaddress, $port, $keepalive);
8 public function register_callback($callback_func) {
9 mistral_register_callback($callback_func);
12 public function run() {
13 mistral_start();
16 public function parse_headers($header) {
17 $lines = explode("\n", $header);
18 $first_line = explode(' ', array_shift($lines));
20 $_SERVER['REQUEST_METHOD'] = strtoupper($first_line[0]);
21 $_SERVER['REQUEST_URI'] = $first_line[1];
22 $_SERVER['SERVER_PROTOCOL'] = strtoupper($first_line[2]);
24 foreach( $lines as $line ) {
25 $line = trim($line);
26 if( $line == '' ) continue;
27 $parts = explode(': ', $line);
28 if( isset($parts[0]) ) {
29 $parts[0] = strtoupper($parts[0]);
30 if( $parts[0] == 'COOKIE' ) {
31 $cookies = explode('; ', $parts[1]);
32 foreach( $cookies as $cookie ) {
33 $cookie_parts = explode('=', $cookie);
34 $_COOKIE[$cookie_parts[0]] = $cookie_parts[1];
36 } else {
37 $_SERVER['HTTP_'.str_replace('-', '_', $parts[0])] = $parts[1];
42 $parsed_uri = parse_url($_SERVER['REQUEST_URI']);
43 parse_str($parsed_uri['query'], $_GET);
45 $_SERVER['argv'] = array(0 => $parsed_uri['query']);
46 $_SERVER['argc'] = count($_SERVER['argv']);
47 $_SERVER['GATEWAY_INTERFACE'] = 'CGI/1.1';
48 $_SERVER['SCRIPT_NAME'] = $parsed_uri['path'];
49 $_SERVER['PHP_SELF'] = $_SERVER['SCRIPT_NAME'];
50 $_SERVER['PATH_TRANSLATED'] = __PATH__;
51 $_SERVER['QUERY_STRING'] = $parsed_uri['query'];
52 $_SERVER['DOCUMENT_ROOT'] = '/';
53 if( !isset($_SERVER['HTTP_CONNECTION']) ) {
54 $_SERVER['HTTP_CONNECTION'] = $_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1' ? 'keep-alive' : 'close';