Swoole? ???? ??? HTTP ?? ??? ??? ???? ??
Nov 07, 2023 pm 03:12 PMSwoole? ???? ??? HTTP ?? ??? ??? ???? ??
???? ???? ??? ??? ???? ?? ??? ???? ???? ???? ?? ? ???? ????. ?? ?? ??? ???? ?? ??? ??? ???? ????? ???? ???? ?? ??? ?? ??? ???? ?? ??? ??? ???? ???. ? ????? Swoole? ???? ??? HTTP ?? ??? ??? ???? ??? ???? ???? ?? ??? ?????.
1.?????
Swoole? PHP ??? ???, ??, ??? ???? ?? ???? Node.js ??? ?? ????? ??? API? ?????. Swoole? TCP/UDP/Unix ?? ????? ???? ?????/??, ?? ??, ?? ??? ? ? ??????? ?? ??? ?????? ????? ???? ? ??? ? ????.
2. HTTP ?? ??? ?? ????
???? HTTP ?? ??? ?? ?????? 4?? ?? ???? 7?? ?? ???? ?????.
??? 4 ?? ???? IP ??? ?? ??? ???? ?? ???? ?????. ??? ???? ??? ??? ?? ??? ?? ???? ? ??? ??? ????.
7?? ?? ???? URL, ?? ?? ??? ???? ?? ???? ?????. ?? ??? ?? ???? ????? ??? ???, ??? ?? ????? ??? ??.
? ???? 7?? ?? ???? ??? HTTP ?? ??? ??? ????????.
3. HTTP ?? ??? ?? ??
Swoole? ???? HTTP ?? ??? ??? ???????. ??? HTTP ?? ??? ??? ???? ?????.
(1) ?? ??? ??
Swoole? Server ?? ??? ???? HTTP ?? ??? ??? ?????. ??? ??? ????.
$http = new SwooleHttpServer("0.0.0.0", 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP); $http->on("start", function ($server) { echo "Swoole http server is started at http://0.0.0.0:9501 "; }); $http->on("request", function ($request, $response) { $response->header("Content-Type", "text/plain"); $response->end("Hello World "); }); $http->start();
(2) ?? ???? ?? ??? ??
Swoole? addServer ???? ???? ??? ??? ?????. ??? ?? ???? ??? ? ?? ???? ?? ??? ????? ?? ???? ?? ??? ??? ?? ? ??? ?????. ??? ??? ????.
$http = new SwooleHttpServer("0.0.0.0", 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP); $http->on("workerStart", function ($server, $worker_id) { if ($worker_id == 0) { $server->addServer("0.0.0.0", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_TCP); $server->addServer("0.0.0.0", 9503, SWOOLE_PROCESS, SWOOLE_SOCK_TCP); $server->addServer("0.0.0.0", 9504, SWOOLE_PROCESS, SWOOLE_SOCK_TCP); } }); $http->on("request", function ($request, $response) { $response->header("Content-Type", "text/plain"); $response->end("Hello World "); }); $http->start();
(3) ?? ??? ???? ??
??? ??? ??? ??? ???? ???? ?? ?? ??? ????? ???? ???. ? ????? ?? ??? ?? ????? ???? ??? ??? ??? ?? ???? ?????. ??? ??? ????.
$http = new SwooleHttpServer("0.0.0.0", 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP); $servers = [ ["host" => "127.0.0.1", "port" => 9502], ["host" => "127.0.0.1", "port" => 9503], ["host" => "127.0.0.1", "port" => 9504], ]; $current = 0; $http->on("workerStart", function ($server, $worker_id) use ($servers, &$current) { if ($worker_id == 0) { foreach ($servers as $server) { $server_id = $server["host"] . ":" . $server["port"]; $server = $server["host"]; $port = $server["port"]; $server = $server->addserver($server, $port, SWOOLE_PROCESS, SWOOLE_SOCK_TCP); $server->set(array( 'open_length_check' => true, 'package_max_length' => 81920, 'package_length_type' => 'N', 'package_body_offset' => 16, 'package_length_offset' => 0, )); $server->on('receive', function ($server, $fd, $reactor_id, $data) use ($server_id) { echo "Receive data from $server_id: $data "; $server->send($fd, "Hello, I'm $server_id "); }); } } }); $http->on("request", function ($request, $response) use ($servers, &$current) { $server = $servers[$current]; $host = $server["host"]; $port = $server["port"]; $current = ($current + 1) % count($servers); $client = new SwooleClient(SWOOLE_TCP); $client->connect($host, $port, 0.5); $client->send($request->rawcontent()); $response->end($client->recv()); }); $http->start();
4. HTTP ?? ??? ?? ???
? ??? ???? HTTP ??? ?? HTTP ?? ??? ??? ??? ???? ? ????. HTTP ?? ??? ??? IP ??? 127.0.0.1?? ?? ??? 9501??? ?????. ?? ??? ???? HTTP ??? ?? ? ????.
curl -v "http://127.0.0.1:9501/"
?? ?? ???? HTTP ?? ??? ??? Hello World? ??? ??? ???? ???. ??? ??? ??? ???? 127.0.0.1:9502?? ??? ??: GET / HTTP/1.1? ??? ??? ?????. ??? ??? ???? HTTP ?? ?? ????? ????? ??? ? ????.
V. ??
?? ???? Swoole? ???? ??? HTTP ?? ??? ??? ???? ??? ???? ???? ?? ??? ??????. Swoole? ???? ??? ? ??? ? ?????? ? ???? ???? ? ??? ? ? ?? ??? ???? ????? ? ??? ??? ??? ?????. ? ?? ?? ??? ??? ??? ??? ???? ?????.
? ??? Swoole? ???? ??? HTTP ?? ??? ??? ???? ??? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

Laravel?? Swoole ???? ???? ?? ?? ??? ??? ??? ? ????. ??? ??? ????. ?? ??: ?? ??? ??? ??? ? ????. ???: Linux epoll ??? ????? ???? ??? ????? ?????. ?? ??? ??: ? ?? ?? ???? ?????. ??? ??: Laravel ?????? ???? ???? ??? ?????.

HTTP 301 ?? ??? ?? ??: ? ??? ????? ???? ?? ???? ???? ??? ???? ?? ???? ? ??? ?? ??? ?? ?? ??? ?? ? ???? ????. ? ??? ???? ? ??? ????? HTTP 301 ?? ??? ?? ???? ????? ??? ?????. ? ????? HTTP 301 ?? ??? ??? ? ??? ????? ???? ?? ???? ????? ?????. HTTP301 ?? ??? ?? ????(PermanentRedirect)? ?????. ??? ?????? ??? ?? ?

Swoole? Workerman? ?? ??? PHP ?? ????????. ??? ??, ??? ?? ? ????? ? ??? Swoole? ?? ?? ?? ??? ?? ???? ???? ?? ????? ?????. Workerman? ?? ???? ?? ??? ??? ???? ????? ? ??? ???? API? ?? ???? ? ??? ??? ???? ?????.

?? ??: ???: Swoole? ??? ???? ??? ???? ? ????. ?? ??: Swoole? ??? ???? ??? ????? ?? ?? ??? ? ????. ??? ??: Swoole? ???? ? ?? ???? ?????. ?? ???: Swoole? ???? ?? ?? ????? API? ?????.

Swoole ???? ?? ????? ?? ??? ?????. ??? ??? ???? PID? ?????. ???? ????? "kill -15 PID"? ??????. ???? ???? ? ??? ?? ??? ??? ???? ???? ?? ?????.

Swoole ????? ?? ???? ????? ???? ????? ??? ? ????.

HTTP ?? ?? 404? ??? ?? ??? ?????. ??: ?? ???? ???? HTTP ?? ?? 404? ?? ??? ???. ? ?? ??? ??? ??? ???? ?? ? ??? ?????. ? ???? HTTP ?? ?? 404? ??? ???? ? ?? ?? ??? ???????. 1. HTTP ?? ?? 404? ??: 1.1 ???? ???? ????. ?? ???? ??? ??? ???? ??? ???? ?? ?????. ?? ??? ??? ?????, ??? ?????, ??? ?? ???? ??? ?? ??? ? ????.

Swoole?? fd? uid? onOpen ??? ???? ?? ???? ? ????. ?????? ?? uid? ???? $server->bind ???? ???? uid? fd? ??????. ?????? ??? ??? onClose ??? ???? ?? fd? uid? ??? ??? ? ????. ?????? fd? ???? $server->unbind ???? ???? fd?? uid? ?????.
