skoro/slim-swoole-integration

Slim 框架和 Swoole(事件驱动异步库)的集成

0.1.1 2021-12-31 13:29 UTC

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 命令,它将在 localhost9501 端口上监听。

热代码重载

由于 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();
});