Php GoDaddy服务器在客户端短时间内发送多个POST请求时关闭连接

Php GoDaddy服务器在客户端短时间内发送多个POST请求时关闭连接,php,mysql,angular,ionic-framework,godaddy-api,Php,Mysql,Angular,Ionic Framework,Godaddy Api,我正在使用Ionic框架(Angular v9)向GoDaddy服务器上托管的PHP文件发送POST请求。POST请求工作正常,直到客户端间歇性地发送它们。但是,当客户端开始向服务器发送多个POST请求时,请求将被拒绝。服务器响应时出现以下错误之一: 错误连接已关闭 错误连接超时 错误\u连接\u重置 发现此类错误的场景-自动完成实现。我有一个产品表(phpmyadmin-MySQL DB)和一个PHP文件来从该表中检索数据。客户端应用程序上有一个文本框。用户开始输入产品的名称。应用程序从文本框

我正在使用Ionic框架(Angular v9)向GoDaddy服务器上托管的PHP文件发送POST请求。POST请求工作正常,直到客户端间歇性地发送它们。但是,当客户端开始向服务器发送多个POST请求时,请求将被拒绝。服务器响应时出现以下错误之一:

  • 错误连接已关闭
  • 错误连接超时
  • 错误\u连接\u重置
  • 发现此类错误的场景-自动完成实现。我有一个产品表(phpmyadmin-MySQL DB)和一个PHP文件来从该表中检索数据。客户端应用程序上有一个文本框。用户开始输入产品的名称。应用程序从文本框中获取值,并向服务器发送POST请求。服务器从POST请求中提取值,并查询表中与输入字符串匹配的值。前5名这样的结果被发送回客户机

    只要客户端缓慢地发出POST请求,即两个请求之间有足够的时间间隔(几秒钟),此流就可以工作。然而,这种理想情况是不切实际的。用户的打字速度不允许这样的间隔。我想查询数据库,让服务器返回每个keydown事件的结果

    但问题是,当同一个客户端向服务器发送太多POST请求时,服务器正在关闭连接/重置连接,而没有在任何两个请求之间留出足够的时间间隔


    提前感谢您的帮助。

    如果您需要了解实际限制(允许从客户端到服务器的POST请求速率),请解决此问题

    但一般来说,你需要使用去盎司技术。即使您的主机提供商允许如此多的请求,但将该卷从单个客户机输出也不是一个好主意

  • 您可以对此类组件使用内置的去噪
  • 您可以使用RXJS操作符来通过管道发送POST请求(这样它就不会触发过多的请求)
  • 您可以评估客户机上此类自动完成详细信息的缓存,以防止频繁请求
  • 离子搜索示例:

    <ion-searchbar debounce="500"></ion-searchbar>
    

    如果可以,您需要了解实际限制(允许从客户端到服务器的POST请求速率),然后解决这个问题

    但一般来说,你需要使用去盎司技术。即使您的主机提供商允许如此多的请求,但将该卷从单个客户机输出也不是一个好主意

  • 您可以对此类组件使用内置的去噪
  • 您可以使用RXJS操作符来通过管道发送POST请求(这样它就不会触发过多的请求)
  • 您可以评估客户机上此类自动完成详细信息的缓存,以防止频繁请求
  • 离子搜索示例:

    <ion-searchbar debounce="500"></ion-searchbar>
    

    大多数的答案都建议我在开始讨论这个问题之前先联系戈达迪。因此,在联系GoDaddy之后,我发现共享服务器对于数据密集型应用程序不是很好。如果客户机在短时间内向服务器发出过多请求,那么升级到专用VPS服务器是我们的最佳选择。简单地增强共享服务器并不一定会提高应用程序的性能,也不会解除任何强加的限制


    我从一位高级开发人员那里得到的另一个建议是优化数据库。应执行规范化、索引、应用适当的约束和表之间的关系等。如果数据库未得到优化,某些服务器可能会关闭连接,POST请求可能会失败。

    大多数答案建议我在深入讨论此问题之前与GoDaddy联系。因此,在联系GoDaddy之后,我发现共享服务器对于数据密集型应用程序不是很好。如果客户机在短时间内向服务器发出过多请求,那么升级到专用VPS服务器是我们的最佳选择。简单地增强共享服务器并不一定会提高应用程序的性能,也不会解除任何强加的限制


    我从一位高级开发人员那里得到的另一个建议是优化数据库。应执行规范化、索引、应用适当的约束和表之间的关系等。如果数据库没有得到优化,某些服务器可能会关闭连接,POST请求可能会失败。

    可能只是GoDaddy应用的一个限制,我会首先询问他们。如果服务器设置为关闭或拒绝间隔过短的连接,则很难修复此问题(特别是在托管服务器上,您的服务器设置有限或不可用)。最好的解决方案是降低用户体验,并实施睡眠计时器以限制每秒的请求量(是的,如果您在每次按键事件上查询数据库,则每秒的请求数为多)。我同意@Fullslack.dev,可能只是稍微慢一点。如果您没有对服务器的设置控制,那么来自客户端的帖子将是一个很好的中间解决方案。因此,我建议使用按钮提交结果,而不是自动完成或重新定义自动完成,这样您可以在睡眠后从无键盘类型DC发送数据如果服务器设置为关闭或拒绝时间间隔过短的连接,则很难修复此问题(尤其是在托管服务器上,您的服务器设置有限或没有可用的服务器设置)。最好的解决方案是降低用户体验,并实施睡眠计时器以限制每秒发出的请求量(是的,如果在每次按键事件上查询数据库,则每秒发出多个请求)。我同意@Fullslack.dev,也许只是稍微慢一点。如果