sergonie / network
基于 PHP swoole 的 http 服务器
dev-develop
2021-05-27 20:04 UTC
Requires
- php: >=7.4.0
- ext-swoole: ^4.5
- igniphp/exception: >=1.0
- laminas/laminas-diactoros: ^2.6.0
- laminas/laminas-httphandlerrunner: ^1.4.0
- psr/http-factory: ^1.0
- psr/http-message: ^1.0
- psr/http-server-middleware: ^1.0
- psr/log: ^1.1.4
Requires (Dev)
- mockery/mockery: ^1.3
- phpstan/phpstan: >=0.9.2
- phpunit/phpunit: ~9.5
This package is auto-updated.
Last update: 2024-09-28 04:25:40 UTC
README
要求
- PHP 7.4 或更高版本
- 网络服务器需要 Swoole 扩展才能运行
安装
Linux 用户
pecl install swoole
composer install sergonie/network
使用 homebrew 的 Mac 用户
brew install swoole
composer install sergionie/network
或
brew install homebrew/php/php71-swoole
composer install sergonie/network
基本用法
<?php // Autoloader. require_once __DIR__ . '/vendor/autoload.php'; // Create server instance. $server = new \Sergonie\Network\Server(); $server->start();
监听器
Sergonie http 服务器使用事件驱动模型,这使得其易于扩展和扩展。
有五种类型的事件可用,每个都扩展了 Sergonie\Network\Server\Listener
接口
Sergonie\Network\Server\OnStartListener
在服务器启动时触发Sergonie\Network\Server\OnStopListener
在服务器停止时触发Sergonie\Network\Server\OnConnectListener
在新客户端连接到服务器时触发Sergonie\Network\Server\OnCloseListener
在与客户端的连接关闭时触发Sergonie\Network\Server\OnRequestListener
在新请求分发时触发
<?php // Autoloader. require_once __DIR__ . '/vendor/autoload.php'; use Sergonie\Network\Server\Client; use Sergonie\Network\Server\OnRequestListener; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ResponseInterface; use Sergonie\Network\Http\Stream; // Create server instance. $server = new \Sergonie\Network\Server(); // Each request will retrieve 'Hello' response $server->addListener(new class implements OnRequestListener { public function onRequest(Client $client, ServerRequestInterface $request, ResponseInterface $response): ResponseInterface { return $response->withBody(Stream::fromString("Hello world")); } }); $server->start();
配置
可以使用 Sergonie\Network\Server\Configuration
类轻松配置服务器。
请考虑以下示例
<?php // Autoloader. require_once __DIR__ . '/vendor/autoload.php'; // Listen on localhost at port 80. $configuration = new \Sergonie\Network\Server\Configuration('0.0.0.0', 80); // Create server instance. $server = new \Sergonie\Network\Server($configuration); $server->start();
启用 ssl 支持
<?php // Autoloader. require_once __DIR__ . '/vendor/autoload.php'; $configuration = new \Sergonie\Network\Server\Configuration(); $configuration->enableSsl($certFile, $keyFile); // Create server instance. $server = new \Sergonie\Network\Server($configuration); $server->start();
以守护进程运行服务器
<?php // Autoloader. require_once __DIR__ . '/vendor/autoload.php'; $configuration = new \Sergonie\Network\Server\Configuration(); $configuration->enableDaemon($pidFile); // Create server instance. $server = new \Sergonie\Network\Server($configuration); $server->start();
更多示例可以在 ./examples/
目录中找到。