1
0
你实际上扮演了两个人的角色, 二者都 有谁能让这一切变得更好。。。 作为人员B,您正在运行一个提供一些数据的web服务。您可以努力使该web服务尽可能高效,例如检查对数据库的不必要或低效调用,或任何可能导致锁定的有状态调用。使用分析器找出代码中最慢的部分在哪里——不要猜测和浪费时间优化已经很快的东西。 您可以实现缓存,以便在不重新获取数据的情况下为重复请求提供服务。您可以发送缓存生存期标头,以帮助客户端缓存其端的响应。 您可以实现超时和速率限制,这样它在高负载下会更正常地失败,将结果返回给一些用户,将有用的错误返回给其他用户。 当然,你可以在这个问题上投入更多的硬件,但一定要确定瓶颈在哪里。如果还没有,请将数据库和web服务器放在不同的服务器或容器上,这样它们就不会争夺CPU和RAM。如果Web服务器耗尽CPU或网络容量,考虑“扩展”,将多个Web服务器放在一个数据库前面。 作为个人,您正在从web服务请求数据您可以实现数据缓存或HTTP响应缓存,这样就不需要经常调用服务。你可以问web服务的作者(你自己!)通过在响应中包含缓存生存期信息来帮助实现这一点。 您可以限制单个用户按下按钮的频率,这样他们就不会使远程服务过载。 您可以实现客户端超时并优雅地处理故障,如果服务没有响应,则返回到旧的缓存数据或有用的错误消息。 使用第三方库,比如Guzzle或Symfony HTTP客户端,而不是手工创建curl调用,可能会让您受益匪浅。它们不会自动变得更快,但它们会使缓存和超时等功能的实现比PHP中内置的非常低级的函数容易得多。 |