PHP与Node REST-API

我正在构build一个简单的REST-API,它有一个端点,这个端点会被深度渗透。 我们称之为POST /message 。 我必须决定使用Node还是PHP。 数据库是MySQL。

在这条路线中会发生什么: – 通过HTTP-Auth的证书将通过从数据库中读取来进行检查。 – 请求另一个REST-API。 – 将执行另一个写入数据库操作。

所以有2个数据库连接和一个到另一个REST-API的http请求。 路线应该都是有速度的。 我会去PHP,因为目前的系统是基于PHP的,但路由内的请求会吓到我,导致它不是使用PHP时asynchronous。 我不关心这个请求的结果,并且在节点中,我可以只检查凭证并返回success ,asynchronous发送请求并在请求返回后执行数据库写入性能。 我不认为我可以在PHP中这样做,因为当我返回REST调用success ,一切都必须先完成,对吧?

去PHP或节点?

你写了:

导致它不是使用PHP时asynchronous

你确定这是不可能的吗? 甚至没有Guzzleasynchronous请求 ?

无论如何,我用几种语言实现了相同的REST API服务器,并在同一台机器上testing(Ubuntu Linux 16.04,i7 Intel NUC,16GB RAM),结果发现:

  • Java,14000请求/秒(源代码)
  • 去,12000请求/秒(源代码)
  • PHP 7,6500请求/秒(源代码)
  • C#(.net核心),5000请求/秒(源代码)
  • Node.js,4200请求/秒(源代码)

(资源)

请注意,Node.js是唯一无法高效使用多个内核的平台。

为了模拟你的要求,我试着给PHP添加一个15ms的usleep,向Node.js添加一个15ms的setTimeout,发现当用2000个并发请求触发时,Node.js的吞吐量更高(4300 vs 1800 req /秒),但也有更高的延迟(450 vs 130 ms / req)。 可能是因为它只用了一个核心,不得不应对许多事件。 较高吞吐量的较高延迟可能是由使用事件循环引起的。 使用Apache(预)分支可能会更昂贵,但能够实现更高的并发性。

我不确定这一切会直接帮助你,但它可能会为你自己的研究提供一个起点。 玩的开心!