当前位置:  开发笔记 > 编程语言 > 正文

PHP与节点REST-API

如何解决《PHP与节点REST-API》经验,为你挑选了1个好方法。

我正在构建一个简单的REST-API,它有一个端点,它将被大量渗透.我们称之为POST /message.我必须决定使用Node还是PHP.数据库是MySQL.

在此路由中发生的事情: - 通过HTTP-Auth的凭据将通过从数据库中读取来检查. - 请求另一个REST-API. - 将执行另一个写入数据库操作.

因此,有2个数据库连接和另一个REST-API的http请求.路线应该都是关于速度的.我会选择PHP,因为当前的系统基于PHP,但是路由中的请求让我感到害怕,因为在使用PHP时它不是异步的.我不关心这个请求的结果,在节点中我可以只检查凭据并返回success,异步发送请求并在请求返回后执行数据库写入性能.我不认为我可以在PHP中这样做,因为当我返回REST调用时success,一切都必须在之前完成,对吧?

去PHP还是节点?



1> mevdschee..:

你写了:

因为使用PHP时不会异步

你确定不可能吗?甚至没有Guzzle Async Requests?

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

Java,14000 req/sec (源代码)

Go,12000 req/sec (源代码)

PHP 7,6500 req/sec (源代码)

C#(.net Core),5000 req/sec (源代码)

Node.js,4200 req/sec (源代码)

(资源)

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

为了模拟您的要求,我尝试将一个15ms的usleep添加到PHP,并将一个15ms的setTimeout添加到Node.js,发现当用2000个并发请求命中它时Node.js的吞吐量更高(4300 vs 1800 req /秒),但也有更高的延迟(450 vs 130 ms/req).可能是因为它只使用一个核心并且必须响应许多事件.使用事件循环可能导致具有更高吞吐量的更高延迟.使用Apache(pre)fork可能更昂贵,但能够实现更高的并发性.

我不确定这一切对你有什么帮助,但它可能会为你自己的研究提供一个起点.玩得开心!

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有