setGlobal(HTTP_GLOBAL_ALL, HTTP_GLOBAL_GET|HTTP_GLOBAL_POST|HTTP_GLOBAL_COOKIE);
$http->set([
// 'daemonize' => 1,
// 'open_cpu_affinity' => 1,
// 'task_worker_num' => 1,
//'open_cpu_affinity' => 1,
//'task_worker_num' => 100,
//'enable_port_reuse' => true,
'worker_num' => 1,
//'log_file' => __DIR__.'/swoole.log',
// 'reactor_num' => 24,
//'dispatch_mode' => 3,
//'discard_timeout_request' => true,
// 'open_tcp_nodelay' => true,
// 'open_mqtt_protocol' => true,
//'task_worker_num' => 1,
//'user' => 'www-data',
//'group' => 'www-data',
//'daemonize' => true,
// 'ssl_cert_file' => $key_dir.'/ssl.crt',
// 'ssl_key_file' => $key_dir.'/ssl.key',
// 'enable_static_handler' => true,
// 'document_root' => '/home/htf/workspace/php/www.swoole.com/web/'
]);
$http->listen('127.0.0.1', 9502, SWOOLE_SOCK_TCP);
function chunk(swoole_http_request $request, swoole_http_response $response)
{
$response->write("
hello world1
");
//sleep(1);
$response->write("hello world2
");
//sleep(1);
$response->end();
}
function no_chunk(swoole_http_request $request, swoole_http_response $response)
{
/**
* Cookie Test
*/
//$response->cookie('test1', '1234', time() + 86400, '/');
// $response->cookie('test2', '5678', time() + 86400);
// var_dump($response->cookie);
// var_dump($request->cookie);
// try
// {
// if (rand(1, 99) % 2 == 1)
// {
// throw new Exception("just for fun.");
// }
// $response->end("Hello Swoole. #".rand(1000, 9999)."
");
// }
// catch(Exception $e)
// {
// $response->end("Exceptiom
".$e->getMessage()."
");
// }
//var_dump($request->server['request_uri'], substr($request->server['request_uri'], -4, 4));
if (substr($request->server['request_uri'], -8, 8) == 'test.jpg') {
$response->header('Content-Type', 'image/jpeg');
$response->sendfile(dirname(__DIR__) . '/test.jpg');
return;
} elseif ($request->server['request_uri'] == '/test.txt') {
$last_modified_time = filemtime(__DIR__ . '/test.txt');
$etag = md5_file(__DIR__ . '/test.txt');
// always send headers
$response->header("Last-Modified", gmdate("D, d M Y H:i:s", $last_modified_time) . " GMT");
$response->header("Etag", $etag);
if (strtotime($request->header['if-modified-since']) == $last_modified_time or trim($request->header['if-none-match']) == $etag) {
$response->status(304);
$response->end();
} else {
$response->sendfile(__DIR__ . '/test.txt');
}
return;
} else if ($request->server['request_uri'] == '/favicon.ico') {
$response->status(404);
$response->end();
return;
} else if ($request->server['request_uri'] == '/code') {
$response->sendfile(__FILE__);
return;
} elseif ($request->server['request_uri'] == '/save') {
file_put_contents(__DIR__ . '/httpdata', $request->getData());
$response->end('hello');
return;
} else {
//var_dump($request->post);
//var_export($request->cookie);
// var_dump($request->rawContent());
// if ($request->server['request_method'] == 'POST')
// {
// var_dump($request->post);
// }
// echo "GET:" . var_export($_GET, true)."\n";
// echo "POST:" . var_export($_POST, true)."\n";
// echo "get:" . var_export($request->get, true)."\n";
// echo "post:" . var_export($request->post, true)."\n";
//var_dump($request->server);
$output = '';
$output .= "HEADER:
" . dump($request->header);
$output .= "SERVER:
" . dump($request->server);
if (!empty($request->files)) {
$output .= "FILE:
" . dump($request->files);
}
if (!empty($request->cookie)) {
$output .= "COOKIES:
" . dump($request->cookie);
}
if (!empty($request->get)) {
$output .= "GET:
" . dump($request->get);
}
if (!empty($request->post)) {
$output .= "POST:
" . dump($request->post);
}
var_dump($request->post);
//$response->header('X-Server', 'Swoole');
//unset($request, $response);
// swoole_timer_after(2000, function() use ( $response) {
$response->end("Hello Swoole.
" . $output);
return;
// });
}
//var_dump($request);
// var_dump($_GET);
//var_dump($_POST);
//var_dump($_COOKIE);
//$response->status(301);
//$response->header("Location", "http://www.baidu.com/");
//$response->cookie("hello", "world", time() + 3600);
// $response->header("Content-Type", "text/html; charset=utf-8");
//var_dump($request->post);
// var_dump($request->get);
// echo strlen(gzdeflate("Hello Swoole.
"));
// $response->end("Hello Swoole.
");
//$response->end("Hello Swoole. #".str_repeat('A', rand(100, 999))."
");
//global $http;
//$http->task("hello world");
$file = realpath(__DIR__ . '/../' . $request->server['request_uri']);
if (is_file($file))
{
echo "http get file=$file\n";
if (substr($file, -4) == '.php')
{
$response->gzip();
}
else
{
$response->header('Content-Type', 'image/jpeg');
}
$content = file_get_contents($file);
echo "response size = " . strlen($content) . "\n";
// $response->write($content);
// $response->end();
$response->end($content);
}
else
{
$response->end("Hello Swoole.
");
}
}
$http->on('request', function ($req, $resp) {
$uri = $req->server['request_uri'];
if ($uri == '/favicon.ico') {
$resp->status(404);
$resp->end();
}
elseif ($uri == '/chunk') {
chunk($req, $resp);
} else {
no_chunk($req, $resp);
}
});
$http->on('finish', function ()
{
echo "task finish";
});
$http->on('task', function ()
{
echo "async task\n";
});
//$http->on('close', function(){
// echo "on close\n";
//});
$http->on('workerStart', function ($serv, $id)
{
//var_dump($serv);
});
$http->start();