skoro / slim-swoole-integration
Slim 框架和 Swoole(事件驱动异步库)的集成
0.1.1
2021-12-31 13:29 UTC
Requires
- php: ^8.0
- ext-swoole: ^4.8
- leocavalcante/request-callback: ^0.1.1
- slim/slim: ^4.9
Requires (Dev)
- swoole/ide-helper: ^4.8
Suggests
- ext-inotify: Needed to enable hot code reloading
This package is auto-updated.
Last update: 2024-08-27 23:24:59 UTC
README
本软件包提供了 Slim 框架 和基于事件的异步 Swoole 库的集成。
通过 composer 安装
composer require skoro/slim-swoole-integration
示例(server.php
)
$server = new \Swoole\Http\Server('localhost', 9501); $app = \Slim\Factory\AppFactory::create(); $app->get('/', function (\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response) { $response->getBody()->write('Hello'); return $response; }); $server->on('request', \Slim\Swoole\ServerRequestFactory::createRequestCallback($app)); $server->start();
启动上述服务器后,使用 php server.php
命令,它将在 localhost
的 9501
端口上监听。
热代码重载
由于 Swoole 的工作方式与 PHP-FPM 不同,它在请求之间不会像 PHP-FPM 那样重新加载你更改的源文件。当你更改源文件时,你必须重新启动服务器以应用源代码更改,这可能会变得令人烦恼。
本库根据文件系统更改提供自动服务器重载,但它依赖于 PHP pecl inotify
扩展,因此应首先安装。
请注意,Swoole 在 WorkerStart
事件之前不能处理包含的 PHP 文件:https://www.swoole.co.uk/docs/modules/swoole-server-reload#checking-loaded-files。
示例
// $server is created in the above example. $server->on('start', function ($server) { $watcher = new \Slim\Swoole\FileWatchers\InotifyWatcher(); $watcher->addFilePath('path to your project sources'); // Reloader tracks the changes every 1000 ms. $reloader = new \Slim\Swoole\HotCodeReloader($watcher, $server, 1000); $reloader->start(); });