Init Repo

This commit is contained in:
root
2019-09-06 23:53:10 +08:00
commit f0ef89dfbb
7905 changed files with 914138 additions and 0 deletions

View File

@ -0,0 +1,11 @@
<?php
$http = new swoole_http_server("0.0.0.0", 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL);
$http->set([
'ssl_cert_file' => __DIR__ . '/localhost-ssl/swoole_server.crt',
'ssl_key_file' => __DIR__ . '/localhost-ssl/swoole_server.key',
]);
$http->on('request', function ($request, $response) {
$response->header("Content-Type", "text/html; charset=utf-8");
$response->end("<h1>Hello Swoole. #".rand(1000, 9999)."</h1>");
});
$http->start();

View File

@ -0,0 +1,316 @@
<?php
require_once __DIR__ . "/../../../include/bootstrap.php";
class HttpServer
{
/**
* @var \swoole_http_server
*/
public $httpServ;
public function __construct($host = HTTP_SERVER_HOST, $port = HTTP_SERVER_PORT, $ssl = false)
{
if ($ssl) {
$this->httpServ = new \swoole_http_server($host, $port, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL);
} else {
$this->httpServ = new \swoole_http_server($host, $port, SWOOLE_PROCESS, SWOOLE_SOCK_TCP);
}
$config = [
// 输出限制
"buffer_output_size" => 1024 * 1024 * 1024,
"max_connection" => 10240,
"pipe_buffer_size" => 1024 * 1024 * 1024,
// 'enable_port_reuse' => true,
'user' => 'www-data',
'group' => 'www-data',
'log_file' => '/tmp/swoole.log',
'dispatch_mode' => 3,
'open_tcp_nodelay' => 1,
'open_cpu_affinity' => 1,
'daemonize' => 0,
'reactor_num' => 1,
'worker_num' => 2,
'max_request' => 100000,
/*
'package_max_length' => 1024 * 1024 * 2
'open_length_check' => 1,
'package_length_type' => 'N',
'package_length_offset' => 0,
'package_body_offset' => 0,
'open_nova_protocol' => 1,
*/
];
if ($ssl)
{
$config['ssl_cert_file'] = __DIR__ . '/localhost-ssl/server.crt';
$config['ssl_key_file'] = __DIR__ . '/localhost-ssl/server.key';
}
$this->httpServ->set($config);
}
public function start()
{
$this->httpServ->on('start', [$this, 'onStart']);
$this->httpServ->on('shutdown', [$this, 'onShutdown']);
$this->httpServ->on('workerStart', [$this, 'onWorkerStart']);
$this->httpServ->on('workerStop', [$this, 'onWorkerStop']);
$this->httpServ->on('workerError', [$this, 'onWorkerError']);
$this->httpServ->on('connect', [$this, 'onConnect']);
$this->httpServ->on('receive', [$this, 'onReceive']);
$this->httpServ->on('request', [$this, 'onRequest']);
$this->httpServ->on('close', [$this, 'onClose']);
$sock = $this->httpServ->getSocket();
if (!socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, 1)) {
echo 'Unable to set option on socket: '. socket_strerror(socket_last_error()) . PHP_EOL;
}
$this->httpServ->start();
}
public function onConnect()
{
debug_log("connecting ......");
}
public function onClose()
{
debug_log("closing .....");
}
public function onStart(\swoole_http_server $swooleServer)
{
debug_log("swoole_server starting .....");
}
public function onShutdown(\swoole_http_server $swooleServer)
{
debug_log("swoole_server shutdown .....");
}
public function onWorkerStart(\swoole_http_server $swooleServer, $workerId)
{
debug_log("worker #$workerId starting .....");
}
public function onWorkerStop(\swoole_http_server $swooleServer, $workerId)
{
debug_log("worker #$workerId stopping ....");
}
public function onWorkerError(\swoole_http_server $swooleServer, $workerId, $workerPid, $exitCode, $sigNo)
{
debug_log("worker error happening [workerId=$workerId, workerPid=$workerPid, exitCode=$exitCode, signalNo=$sigNo]...");
}
public function onReceive(\swoole_http_server $swooleServer, $fd, $fromId, $data)
{
$recv_len = strlen($data);
debug_log("receive: len $recv_len");
$swooleServer->send($fd, RandStr::gen($recv_len, RandStr::ALL));
}
public function onRequest(\swoole_http_request $request, \swoole_http_response $response)
{
$uri = $request->server["request_uri"];
if ($uri === "/favicon.ico") {
$response->status(404);
$response->end();
return;
}
testSetCookie:
{
$name = "name";
$value = "value";
// $expire = $request->swoole_server["request_time"] + 3600;
$expire = 0;
$path = "/";
$domain = "";
$secure = false;
$httpOnly = true;
// string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]]
$response->cookie($name, $value, $expire, $path, $domain, $secure, $httpOnly);
$expect = "name=value; path=/; httponly";
assert(in_array($expect, $response->cookie, true));
}
if ($uri === "/ping") {
$this->httpServ->send($request->fd, "HTTP/1.1 200 OK\r\nContent-Length: 4\r\n\r\npong\r\n");
return;
}
if ($uri === "/gzip") {
$level = 9;
$response->gzip($level);
$response->end(RandStr::gen(1024 * 1024 * 2, RandStr::ALL));
return;
}
if ($uri === "/info") {
ob_start();
print("request_uri: {$uri}\n");
print("request_method: {$request->server['request_method']}\n");
if (property_exists($request, "get")) {
print("get:" . var_export($request->get, true) . "\n");
}
if (property_exists($request, "post")) {
print("post:" . var_export($request->post, true) . "\n");
}
if (property_exists($request, "cookie")) {
print("cookie:" . var_export($request->cookie, true) . "\n");
}
if (property_exists($request, "header")) {
print("header:" . var_export($request->header, true) . "\n");
}
$response->end(nl2br(ob_get_clean()));
return;
}
if ($uri === "/uri") {
$response->end($request->server['request_uri']);
return;
}
if ($uri === "/method") {
$response->end($request->server['request_method']);
return;
}
if ($uri === "/get") {
if (!empty($request->get)) {
$response->end(json_encode($request->get));
} else {
$response->end("null");
}
return;
}
if ($uri === "/post") {
if (property_exists($request, "post")) {
$response->end(json_encode($request->post));
} else {
$response->end("{}");
}
return;
}
if ($uri === "/cookie") {
if (property_exists($request, "cookie")) {
$response->end(json_encode($request->cookie));
} else {
$response->end("{}");
}
return;
}
if ($uri === "/header") {
if (property_exists($request, "header")) {
$response->end(json_encode($request->header));
} else {
$response->end("{}");
}
return;
}
if ($uri === "/sleep") {
swoole_timer_after(1000, function() use($response) {
$response->end();
});
return;
}
if ($uri === "/404") {
$response->status(404);
$response->end();
return;
}
if ($uri === "/302") {
$response->header("Location", "http://www.swoole.com/");
$response->status(302);
$response->end();
return;
}
if ($uri === "/code") {
swoole_async_readfile(__FILE__, function($filename, $contents) use($response) {
$response->end(highlight_string($contents, true));
});
return;
}
if ($uri === "/json") {
$response->header("Content-Type", "application/json");
$response->end(json_encode($request->server, JSON_PRETTY_PRINT));
return;
}
if ($uri === "/chunked") {
$write = function($str) use($request) { return $this->httpServ->send($request->fd, $str); };
$write("HTTP/1.1 200 OK\r\n");
$write("Content-Encoding: chunked\r\n");
$write("Transfer-Encoding: chunked\r\n");
$write("Content-Type: text/html\r\n");
$write("Connection: keep-alive\r\n");
$write("\r\n");
// "0\r\n\r\n" finish
$writeChunk = function($str = "") use($write) {
$hexLen = dechex(strlen($str));
return $write("$hexLen\r\n$str\r\n");
};
$timer = swoole_timer_tick(200, function() use(&$timer, $writeChunk) {
static $i = 0;
$str = RandStr::gen($i++ % 40 + 1, RandStr::CHINESE) . "<br>";
if ($writeChunk($str) === false) {
swoole_timer_clear($timer);
}
});
return;
}
if ($uri === "/content_length") {
// $body = $request->rawcontent();
if (property_exists($request, "header")) {
if (isset($request->header['content-length'])) {
$response->end($request->header['content-length']);
} else {
$response->end(0);
}
return;
}
}
if ($uri === "/rawcontent") {
$response->end($request->rawcontent());
return;
}
if ($uri === "/file") {
$response->header("Content-Type", "text");
$response->header("Content-Disposition", "attachment; filename=\"test.php\"");
// TODO 这里会超时
$response->sendfile(__FILE__);
}
if ($uri === "/rawcookie") {
$response->cookie($name, $value, $expire, $path, $domain, $secure, $httpOnly);
$response->rawcookie("rawcontent", $request->rawcontent());
}
$response->end("Hello World!");
}
}

View File

@ -0,0 +1,10 @@
<?php
$host = isset($argv[1]) ? $argv[1] : HTTP_SERVER_HOST;
$port = isset($argv[2]) ? $argv[2] : HTTP_SERVER_PORT;
$httpServer = new swoole_http_server($host, $port);
$httpServer->on("request", function ($request, $response) {
});
$httpServer->start();

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICJTCCAY4CCQCyGHb21IPDXjANBgkqhkiG9w0BAQUFADBXMQswCQYDVQQGEwJD
TjERMA8GA1UECBMIWmhlamlhbmcxETAPBgNVBAcTCEhhbmd6aG91MQ4wDAYDVQQK
EwVNeSBDQTESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE3MDIwOTA3NTExOVoXDTE3
MDMxMTA3NTExOVowVzELMAkGA1UEBhMCQ04xETAPBgNVBAgTCFpoZWppYW5nMREw
DwYDVQQHEwhIYW5nemhvdTEOMAwGA1UEChMFTXkgQ0ExEjAQBgNVBAMTCWxvY2Fs
aG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAkkn6a1CZrX/cDofktWZT
GDMIwIVfMsSOCSTBGTeQoCc7i/Zn6minMyJsD5+s3W6ctpja0JlwKt53ZVgNgrm9
H6NZyKNKqdWY8ElZwKE7nJ1LGlpS6nbY+M2VVedZLetU66+pi5/tAOsewRXkDemI
4xi6BRU4jIlvT84ovReklXUCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAvGGt+nFvc
sfV/5oqJ43/wZvrA/NfLjtH2hJfBCMB+64gVgzVU/7FF35lTQwgDhAEidzUrUHVP
eI3hxJlVBBAGF5UjLx7rGOAPqm3Vm4C3Xkso90DZzSUo/se/R6bdpO+Iv1icLhFR
uGmMwQb/2DFpiy2XQojkoNwBvI1V9cHGGQ==
-----END CERTIFICATE-----

View File

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIBlzCCAQACAQAwVzELMAkGA1UEBhMCQ04xETAPBgNVBAgTCFpoZWppYW5nMREw
DwYDVQQHEwhIYW5nemhvdTEOMAwGA1UEChMFTXkgQ0ExEjAQBgNVBAMTCWxvY2Fs
aG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAkkn6a1CZrX/cDofktWZT
GDMIwIVfMsSOCSTBGTeQoCc7i/Zn6minMyJsD5+s3W6ctpja0JlwKt53ZVgNgrm9
H6NZyKNKqdWY8ElZwKE7nJ1LGlpS6nbY+M2VVedZLetU66+pi5/tAOsewRXkDemI
4xi6BRU4jIlvT84ovReklXUCAwEAAaAAMA0GCSqGSIb3DQEBBQUAA4GBAI+msopi
c6QIu0yYwPix0DyC8FEONih0kOQ//oe1bMLwbox/uxSoRmoJGiOdF7jqZceA0k8H
59SWMGzIUt5MRhDrye/7/LedXDVdCPacYLx7OzIlkBv9Dklk9o26jjT9u3Il7fQx
OfcCm2Lk+cwv3xXm6ZtEmklqKbnAnKd1oBfv
-----END CERTIFICATE REQUEST-----

View File

@ -0,0 +1,15 @@
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQCSSfprUJmtf9wOh+S1ZlMYMwjAhV8yxI4JJMEZN5CgJzuL9mfq
aKczImwPn6zdbpy2mNrQmXAq3ndlWA2Cub0fo1nIo0qp1ZjwSVnAoTucnUsaWlLq
dtj4zZVV51kt61Trr6mLn+0A6x7BFeQN6YjjGLoFFTiMiW9Pzii9F6SVdQIDAQAB
AoGAb2J8lbFtEbnE6Bt4fNZIdqiFBXGHprQaIcQmcvjn2cmFgXBAdy7v//M5rDu7
9239TNrd4O6zhTCWYEfHIb4izQlzj1WNwYm+9JCQ/ZLdD7B3e9IlYxcuw2QfmMJh
SLKITQSXLrCOlkRtRHCeKxC281p8jbpt7cwEPSZ9TNGP8QECQQDCvIXFUTKsb6Vc
UUcwCJBWucMlRA0njSqtcFU6G0LXSL8UspQMBM52T+fkQT1Hcx3rfUCPL9ywZvDG
7ECYDm6FAkEAwE+lhsuling0arIsI+IUT+N24iWYcC6Mq02MNa0A32KsOJs4oXxD
L50KFfsT3aW0V5KgaWipo/RwdQgkBHoWMQJACaauOok7qbAe0eR1UrwZ6zJpqX8l
57/nTZEzqB2Rwnmofq4bCD10vghXxcg18USTRwh+GpqUpWl0pWcwDFkqwQJATWaA
/4ytNtsEdcD6RQL0G+c37PMmtFf34+ZVPTFBPadQG4RVuaDyxZIWAhzItRfBStHH
4ETwqf1y2ZeKL4cXsQJAO0VLkDsUaepjfUMMYGw1cJeKm3ckdLb0+BKx9+Auxl2q
RgF3Nic7M09BbJxaRjjC47nyEA5wVg+G2DVgD4jI0A==
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1 @@
BC864F1DFA88521C

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICKTCCAZICCQC8hk8d+ohSHDANBgkqhkiG9w0BAQUFADBXMQswCQYDVQQGEwJD
TjERMA8GA1UECBMIWmhlamlhbmcxETAPBgNVBAcTCEhhbmd6aG91MQ4wDAYDVQQK
EwVNeSBDQTESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE3MDIwOTA3NTMxMloXDTE3
MDMxMTA3NTMxMlowWzELMAkGA1UEBhMCQ04xETAPBgNVBAgTCFpoZWppYW5nMREw
DwYDVQQHEwhIYW5nemhvdTESMBAGA1UEChMJTXkgQ2xpZW50MRIwEAYDVQQDEwls
b2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJEUnBzXTTiyUmDb
yhkQoQ/yH1zTnuIk5Meg1Bp0fp1l4kwiizdPbZkk4YkTT/HXdTE6822Cqho+CwGE
VqWZyyd2AZmj87OGb4ZRCyyFzzjfEwdCTvyqZSUBoc1gvSGdEiaA4mXE87Y0XcMB
BasOrfmO76nuzyaXLT7xDjrB+Qw5AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAC09q
KOuSbAW4Zt4I3CZOh3j+bMax++6M37RWCpShCTdaapdm37y436QbtuB9K6ry7MLo
0HcqQksDm8tLmQqEenfhqZo10FiQj0v1ckvg3lzH4OIP5IM0zXkApnlX6aKuOBbC
XMkYSqdwK0A8QNrl051RCKE2CaYK3cnSN0z4+Vs=
-----END CERTIFICATE-----

View File

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIBmzCCAQQCAQAwWzELMAkGA1UEBhMCQ04xETAPBgNVBAgTCFpoZWppYW5nMREw
DwYDVQQHEwhIYW5nemhvdTESMBAGA1UEChMJTXkgQ2xpZW50MRIwEAYDVQQDEwls
b2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJEUnBzXTTiyUmDb
yhkQoQ/yH1zTnuIk5Meg1Bp0fp1l4kwiizdPbZkk4YkTT/HXdTE6822Cqho+CwGE
VqWZyyd2AZmj87OGb4ZRCyyFzzjfEwdCTvyqZSUBoc1gvSGdEiaA4mXE87Y0XcMB
BasOrfmO76nuzyaXLT7xDjrB+Qw5AgMBAAGgADANBgkqhkiG9w0BAQUFAAOBgQAx
rsaWSV81/SCf+0af57Wr+BJfiGEutZpdmIe0ofPKfVfz7c8QKjqK+/xQb0INUaYd
MUPjuLfvp06iCWyDPsfhsBRZMSDfFZDp8bnoVloVbP+yLL2Gd+h/a5iYjKTJ2FEt
mDaoIXqbw7oHXXxfKKLP2iyUQCqbfJTC0XeJtFWJ3w==
-----END CERTIFICATE REQUEST-----

View File

@ -0,0 +1,15 @@
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQCRFJwc1004slJg28oZEKEP8h9c057iJOTHoNQadH6dZeJMIos3
T22ZJOGJE0/x13UxOvNtgqoaPgsBhFalmcsndgGZo/Ozhm+GUQsshc843xMHQk78
qmUlAaHNYL0hnRImgOJlxPO2NF3DAQWrDq35ju+p7s8mly0+8Q46wfkMOQIDAQAB
AoGAarOFvZB7st8zxxjfImAglOG2P0dE633G5Stb07kqBgkQzn35dcxtBt0hIveZ
LH0SLAr3Tetzv6kx3wO91j2uM1QURztULIcFaDrQyrBbAYoka2WDoxJCSRoGvb9X
7JoyuYtYvbctT8dvYF9mVttq/YdAjFfs7RHwMGSZUc9xkCECQQDA1NNdmsupDZrG
e6sBToEcNuLd/ahB77AS19dWt9WLGSDhG+/wj2bx9l73RTnadenjIPoRaY0RZu4u
fDNlKYErAkEAwJtQn4PSLZe3Rx/FfrGn4pxLFvL/6EgaPKxY1nNd55JY3x15L9A9
IjODD+CH+BYbYufHfI5n27QIVRDIpNAOKwJAb/2q3BxA1+fs0gWU5WdgmLBPxjnB
dLnt+qOcjuKphOWNMO/2xDGkyjYaJWXxGa2NrrnCQkaZBVhQUHMVrlUSjQJAeUhT
+F5VlwgWDN9gyWqtQPESB510r5vXiaUtO7zhwNRSygwRJ56FIGg3e2PzurCRBjLV
VwWFOL+hD4/GCKJKiQJAfQbp5pZ1Fni/YWo2gmuQi+9kMv3BKfpeHwNclPICY86c
JSAo2+e7Xwz+GHxW9Hqpuz4J1CKjFGS0VzZAFWBi2w==
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,6 @@
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCRFJwc1004slJg28oZEKEP8h9c
057iJOTHoNQadH6dZeJMIos3T22ZJOGJE0/x13UxOvNtgqoaPgsBhFalmcsndgGZ
o/Ozhm+GUQsshc843xMHQk78qmUlAaHNYL0hnRImgOJlxPO2NF3DAQWrDq35ju+p
7s8mly0+8Q46wfkMOQIDAQAB
-----END PUBLIC KEY-----

View File

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICKTCCAZICCQC8hk8d+ohSGzANBgkqhkiG9w0BAQUFADBXMQswCQYDVQQGEwJD
TjERMA8GA1UECBMIWmhlamlhbmcxETAPBgNVBAcTCEhhbmd6aG91MQ4wDAYDVQQK
EwVNeSBDQTESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE3MDIwOTA3NTIzNloXDTE3
MDMxMTA3NTIzNlowWzELMAkGA1UEBhMCQ04xETAPBgNVBAgTCFpoZWppYW5nMREw
DwYDVQQHEwhIYW5nemhvdTESMBAGA1UEChMJTXkgU2VydmVyMRIwEAYDVQQDEwls
b2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKg4oNy7liSNUU1T
gZQEEKPJ1znNgbCzbEJ/QlsKhLMzIjiv+xaTvYFffUcZw++NwsCwQUYsdAsmDwQT
4wdTr6JBKwYuKRnyL/l5N/h4VEmNh2MGz2NSqo66QNOiJMOYhmuxmcr08WXPr6Hp
A+KtpQgNt2NFB0nSbb/EvyJgSx85AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAHnKB
iH4Yy7P9dfgJ7/KAB3U15pFYVonPgiqCjVZLgF6rG1F0PNjRBaH24QLg1r/pzbYV
BwsM7WVslRiAx2xh4O3A67GukhPOVerNGcfiFeadqM2e9RVVtcLkwMMfRaL/4oRx
NrkkscP5NrD9lzbVGq9b+heQMYT3fPxokseNngc=
-----END CERTIFICATE-----

View File

@ -0,0 +1,11 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIBmzCCAQQCAQAwWzELMAkGA1UEBhMCQ04xETAPBgNVBAgTCFpoZWppYW5nMREw
DwYDVQQHEwhIYW5nemhvdTESMBAGA1UEChMJTXkgU2VydmVyMRIwEAYDVQQDEwls
b2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKg4oNy7liSNUU1T
gZQEEKPJ1znNgbCzbEJ/QlsKhLMzIjiv+xaTvYFffUcZw++NwsCwQUYsdAsmDwQT
4wdTr6JBKwYuKRnyL/l5N/h4VEmNh2MGz2NSqo66QNOiJMOYhmuxmcr08WXPr6Hp
A+KtpQgNt2NFB0nSbb/EvyJgSx85AgMBAAGgADANBgkqhkiG9w0BAQUFAAOBgQA6
hlKHAfMWwwyqdqsMPd+Q4LetmER+ARnMZTOMSMp1iFXEdTIZwA+WHfxdN+KJ4gnp
3QWpoG+q4O2tyMZQDB9wSAY7LbFyHjzpqq1JJXL2Qpa71NqE0JRZEToAxuyrGf0n
NCpZp0vHFERhgntLkNSM9sMFCWuB6dB1YfeCkTWCeA==
-----END CERTIFICATE REQUEST-----

View File

@ -0,0 +1,15 @@
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCoOKDcu5YkjVFNU4GUBBCjydc5zYGws2xCf0JbCoSzMyI4r/sW
k72BX31HGcPvjcLAsEFGLHQLJg8EE+MHU6+iQSsGLikZ8i/5eTf4eFRJjYdjBs9j
UqqOukDToiTDmIZrsZnK9PFlz6+h6QPiraUIDbdjRQdJ0m2/xL8iYEsfOQIDAQAB
AoGAPmbbTWaMuLxvd2bNv5GOdqOuIjQYsuqr8zLv84PAXBVQ0YR+eQ6PEsnQWCq3
o0qL/xyi6hwdY/FXSqTx58rkcIsO7BRlmaQ7uqEgMd52UUej/xAka8mFVJbjAjPR
gB2mGaoO9IiPYFwrjoDA5v/lFq62SLZ81nvOOwbjZxXW3TECQQDS1yGKPuvxOV/w
BVCYwhSALMMXBxhAVi4bDtft6dMqXtOourBpUS9zvGx2GTct4hpzVFGkVt7VONbH
/oGUOKytAkEAzECW/LV5v9R7ufcTbAgbML4+Yh/38lvPg2Oh2f6k1RMerszRJ6nZ
K+wwRnmT+gmPCIiKmebhZ7OkmlUiz6ciPQJBAKijX/VWfJt127F8XsnAOmuG4ggS
KaiUBc6oobdu1fLG5B7KK/4g7IZyyIHxizwM5EEoySBcR2FeVBSlEXm/lwUCQQCC
eFO6MxYFQm6SONBwNrFfrnZc6bzRVHI2pILzpCSYcvEriWulIWq3EtU3f1vV4Rs7
wTR/4KplOqxPZUiqSkGlAkAy5HpRgBjCG57vHpwIv8jZm3g0/8Kqle5dMp8o8IVI
2gh6YbBt2xIZCgGKKK6VUYz7PdGyEZ+I/41iIeLzftek
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,6 @@
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCoOKDcu5YkjVFNU4GUBBCjydc5
zYGws2xCf0JbCoSzMyI4r/sWk72BX31HGcPvjcLAsEFGLHQLJg8EE+MHU6+iQSsG
LikZ8i/5eTf4eFRJjYdjBs9jUqqOukDToiTDmIZrsZnK9PFlz6+h6QPiraUIDbdj
RQdJ0m2/xL8iYEsfOQIDAQAB
-----END PUBLIC KEY-----

View File

@ -0,0 +1,8 @@
<?php
require_once __DIR__ . "/http_server.php";
$host = isset($argv[1]) ? $argv[1] : HTTP_SERVER_HOST;
$port = isset($argv[2]) ? $argv[2] : HTTP_SERVER_PORT;
(new HttpServer($host, $port, false))->start();

View File

@ -0,0 +1,30 @@
<?php
require_once __DIR__ . "/http_server.php";
/*
class swoole_http_server extends swoole_server
{
public swoole_function on($name, $cb) {} // 与 tcp swoole_server 的on接受的eventname 不同
}
class swoole_http_response
{
public swoole_function cookie() {}
public swoole_function rawcookie() {}
public swoole_function status() {}
public swoole_function gzip() {}
public swoole_function header() {}
public swoole_function write() {}
public swoole_function end() {}
public swoole_function sendfile() {}
}
class swoole_http_request
{
public swoole_function rawcontent() {}
}
*/
$host = isset($argv[1]) ? $argv[1] : HTTP_SERVER_HOST;
$port = isset($argv[2]) ? $argv[2] : HTTP_SERVER_PORT;
(new HttpServer($host, $port, true))->start();