Comet-用于构建快速REST API的现代PHP框架

2020-05-13 08:55:59

彗星从斯利姆和工人那里获得了所有的超能力,同时也增加了自己的魔力。

SLIM是一个微框架,它基于现代PSR标准帮助编写简单但功能强大的Web应用程序和API。

Workerman是一个异步事件驱动框架。它提供高性能,可构建快速且可扩展的网络应用。

Comet是一个混合型应用服务器,允许您本地使用SLIM:http://www.slimframework.com/docs/v4/的所有方法。

PHP经常因其低吞吐量和高延迟而受到批评。但对于现代框架来说,这并不一定是真的。让我们看看彗星是如何胜过其他公司的。

正如您所看到的,正确的架构为它提供了十倍于symfony和其他流行框架的优势。

从API获得响应需要多长时间比总体服务吞吐量更重要。这就是彗星真正闪耀的地方!

Comet为典型场景提供亚毫秒级延迟。即使在数千个并发连接的硬压力下,它也可以与Go和Java等编译平台的框架竞争。

这将安装框架本身和所有必需的依赖项。Comet需要PHP 7.1或更高版本。

<;?PHP使用Comet\Comet;需要_ONCE__DIR__。';/vendor/autoload.php';;$app=new Comet();$app->;get(';/hello&&39;,function($request,$response){$Response->;getBody()->;Write(";Hello,Comet!";);return$Response;});$app->;run();

然后打开浏览器并输入默认地址http://localhost:80-您将看到来自Comet!

<;?PHP使用Comet\Comet;需要_ONCE__DIR__。';/Vendor/autoload.php';;$app=new Comet([';host';=&>;&39;localhost';,';port';=>;8080]);$app-&>Get(';/json';,function($request,$response){$object=new stdClass();$object->;data。=&>;200,";消息";=&>;&34;你好,Comet!";];$payload=json_encode($object);$Response->;getBody()->;write($payload);return$Response->;with Header(';Content-Type';,';application/json&39;);});$app->;write($payload);返回$Response->;with Header(';Content-Type';,';application/json&39;);});$app->;write。

在继续复杂示例之前,请确保您的Composer.json包含如下所示的autoload部分:

如果没有,您应该添加上面提到的部分,并通过命令更新所有供应商软件包和自动加载逻辑:

<;?PHP命名空间控制器;使用Slim\Psr7\Request;使用Slim\Psr7\Response;class SimpleController{私有静态$计数器=0;公共函数getCounter(Request$Request,Response$Response,$args){$Response->;getBody()->;Write(Self::$Counter);return$Response->;with Status(200);}公共函数setCounter(Request$Request,Response$Response,$json=json_decode($json);如果(!$json){return$response->;with Status(500);}self::$counter=$json->;counter;return$response;}}。

<;?PHP使用Comet\Comet;使用控制器\SimpleController;需要_ONCE__DIR__。';/供应商/autoload.php';;$app=new Comet([';host';=&>;&39;localhost';,';port';=>;8080]);$app->;setBasePath(";/api/v1&34;);$app->;get(';/count&39;,&。$APP-&>POST(';/Counter&39;,';Controls\SimpleController:setCounter&39;);$APP-&>Run();

任何具有邮件格式正文的调用都将使用HTTP500代码进行回复,这在控制器逻辑中定义。

请参考本资源库中的Dockerfile,作为创建您自己的APP镜像和容器的起点。

如果您希望将nginx用作Comet应用的反向代理或负载均衡器,请在nginx.conf中插入以下行:

HTTP{上游APP{服务器http://path.to.you.app:port;}服务器{监听80;位置/{PROXY_PASS http://app;PROXY_REDIREOFF;}