【发布时间】:2020-11-16 15:27:02
【问题描述】:
我正在使用 Ionic Framework (Angular v9) 将 POST 请求发送到托管在 GoDaddy 服务器上的 PHP 文件。 POST 请求工作正常,直到客户端间歇性地发送它们。但是,当客户端开始向服务器发送多个 POST 请求时,请求将被拒绝。服务器响应以下错误之一:
- 错误连接已关闭
- 错误连接超时
- err_connection_reset
发现此类错误的场景 - 自动完成实现。我有一个产品表 (phpmyadmin - MySQL DB) 和一个 PHP 文件,用于从该表中检索数据。客户端应用程序上有一个文本框。用户开始输入产品名称。该应用程序从文本框中获取值并向服务器发送 POST 请求。服务器从 POST 请求中提取值并在表中查询与输入字符串匹配的值。前 5 个这样的结果被发送回客户端。
只要客户端缓慢地触发 POST 请求,即 2 个请求之间经过足够的时间间隔(几秒钟),此流程就可以工作。然而,这种理想的情况是不切实际的。用户的打字速度不允许经过这样的间隔。我想查询数据库并让服务器在每个 keydown 事件上返回结果。
但问题是,当同一个客户端向服务器发送太多 POST 请求而没有在任何 2 个请求之间留出足够的时间间隔时,服务器正在关闭连接/重置连接。
提前感谢您的帮助。
【问题讨论】:
-
可能只是 GoDaddy 应用的限制,我会先问他们。
-
如果服务器设置为关闭或拒绝在太短的时间间隔内发生的连接,则很难解决此问题(尤其是在您的服务器设置有限或没有可用服务器设置的托管服务器上)。最好的解决方案是降低用户体验并实现一个睡眠定时器来限制每秒发出的请求数量(是的,如果您在每个 keydown 事件上查询数据库,那么您每秒发出多个请求)。
-
我同意@Fullslack.dev 的观点,如果您没有服务器的设置控制,也许只是放慢一点来自客户端的帖子将是一个很好的中间解决方案。因此,我建议使用按钮提交结果,而不是自动完成或重新定义自动完成,以便您可以在睡眠后从没有键盘输入的情况下发送数据
标签: php mysql angular ionic-framework godaddy-api