Http\Server
Http\Server
继承自Server
,是一个的Http
服务器实现。Http\Server
支持同步和异步2种模式。
Http/WebSocket
服务器都是继承自Server
,所以Server
提供的API
,如task/finish/tick
等都可以使用
无论是同步模式还是异步模式,Http\Server
都可以维持大量TCP
客户端连接。同步/异步仅仅体现在对请求的处理方式上。
示例:
use Swoole\Http\Server;
$http = new Server("127.0.0.1", 9501);
$http->on('request', function ($request, $response) {
$response->end("<h1>Hello Swoole. #".rand(1000, 9999)."</h1>");
});
$http->start();
同步模式
这种模式等同于nginx+php-fpm/apache
,它需要设置大量Worker
进程来完成并发请求处理。Worker
进程内可以使用同步阻塞IO
,编程方式与普通PHP
Web
程序完全一致。
与php-fpm/apache
不同的是,客户端连接并不会独占进程,服务器依然可以应对大量并发连接。
异步模式
这种模式下整个服务器是异步非阻塞的,服务器可以应对大规模的并发连接和并发请求。但编程方式需要完全使用异步API
,如MySQL
、redis
、http_client
、file_get_contents
、sleep
等阻塞IO
操作必须切换为异步的方式,如异步Client
,Event
,Timer
等API
。