igniphp / network
基于PHP swoole的http服务器
0.4.0
2019-02-01 06:37 UTC
Requires
- php: >=7.1.0
- ext-swoole: >=4.0.0
- igniphp/exception: >=1.0
- psr/http-factory: >=1.0
- psr/http-message: >=1.0
- psr/http-server-middleware: >=1.0
- psr/log: >=1.0
- zendframework/zend-diactoros: >=1.7
- zendframework/zend-httphandlerrunner: ^1.0
Requires (Dev)
- mockery/mockery: >=1.0.0
- phpstan/phpstan: >=0.9.2
- phpunit/phpunit: >=7.0.0
This package is not auto-updated.
Last update: 2024-09-21 09:45:37 UTC
README
需求
- PHP 7.1或更高版本
- 网络服务器需要swoole扩展才能运行
安装
Linux用户
pecl install swoole
composer install igniphp/network
使用homebrew的Mac用户
brew install swoole
composer install igniphp/network
或
brew install homebrew/php/php71-swoole
composer install igniphp/network
基本用法
<?php // Autoloader. require_once __DIR__ . '/vendor/autoload.php'; // Create server instance. $server = new \Igni\Network\Server(); $server->start();
监听器
Igni http服务器使用事件驱动模型,这使得它易于扩展和扩展。
有五种类型的事件可用,每种都扩展了Igni\Network\Server\Listener
接口
Igni\Network\Server\OnStartListener
在服务器启动时触发Igni\Network\Server\OnStopListener
在服务器停止时触发Igni\Network\Server\OnConnectListener
在新客户端连接到服务器时触发Igni\Network\Server\OnCloseListener
在客户端连接关闭时触发Igni\Network\Server\OnRequestListener
在新请求分发时触发
<?php // Autoloader. require_once __DIR__ . '/vendor/autoload.php'; use Igni\Network\Server\Client; use Igni\Network\Server\OnRequestListener; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ResponseInterface; use Igni\Network\Http\Stream; // Create server instance. $server = new \Igni\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();
配置
可以通过Igni\Network\Server\Configuration
类轻松配置服务器。
请参考以下示例
<?php // Autoloader. require_once __DIR__ . '/vendor/autoload.php'; // Listen on localhost at port 80. $configuration = new \Igni\Network\Server\Configuration('0.0.0.0', 80); // Create server instance. $server = new \Igni\Network\Server($configuration); $server->start();
启用ssl支持
<?php // Autoloader. require_once __DIR__ . '/vendor/autoload.php'; $configuration = new \Igni\Network\Server\Configuration(); $configuration->enableSsl($certFile, $keyFile); // Create server instance. $server = new \Igni\Network\Server($configuration); $server->start();
作为守护进程运行服务器
<?php // Autoloader. require_once __DIR__ . '/vendor/autoload.php'; $configuration = new \Igni\Network\Server\Configuration(); $configuration->enableDaemon($pidFile); // Create server instance. $server = new \Igni\Network\Server($configuration); $server->start();
更多示例可以在./examples/
目录中找到。