网页偶尔显示507存储空间不足

时间:2018-10-22 14:17:49

标签: javascript php html5 web web-hosting

我有一个正在运行的网站。该网站在localhost上运行良好,没有出现此类错误,但是当我将其放到网上后,每当两个或三个用户同时使用同一页面时,它就会开始显示507个存储页面不足。
例如,有一个网页chat.php,它运行ajax请求以每700毫秒更新一次聊天。并排的两个ajax请求继续检查消息和通知。这些ajax请求是使用javascript的setInterval方法完成的。当两个或多个用户同时访问此页面时,该页面不会加载并显示错误,有时该页面显示429个请求过多错误。因此,在同一时间,在用户端最多可以有4个请求,如果脚本同时运行,那么也可以。由于进入过程有限,会发生这种情况吗?默认情况下,托管为我提供了10个受限进入流程。如果您希望我发布setInterval方法代码,即使我认为问题还出在这里,请回复并发表评论。

1 个答案:

答案 0 :(得分:3)

  

例如,有一个网页chat.php,它运行ajax请求以每700毫秒更新一次聊天。

     

这些ajax请求是使用javascript的setInterval方法完成的。

     

当两个或多个用户同时访问此页面时,该页面不会加载并显示错误,有时该页面显示429个请求过多错误。

     

因此,在同一时间,在用户端最多可以发出4个请求,并且如果脚本同时运行也可以。

     

默认情况下,托管服务为我提供了10个受限进入流程。

请花一些时间阅读(自己的)报价。

您说您每700毫秒对A服务器进行一次AJAX处理,您可以使用setInterval来完成。每个用户最多有4个请求,总共10个。如果有2个或更多的访问者,那么东西就会变成干草。

我认为这里可能有多种原因引起问题:

由于多个用户,您达到了10个请求限制。

当2个用户命中4个请求时,您在8处的请求数,如果在服务器上进行了其他任何请求,您很快就会达到10个最大值。3个用户在4个请求中的请求数是12个,根据您的问题达到了限制。 / p>

您可能正在使用DOS自己的服务器。

使用setInterval进行AJAX请求是真的很糟糕。问题是,如果您每700毫秒请求一次服务器,而服务器需要的响应时间超过700毫秒,您就会堆积请求。您最终将只用一个用户就达到了极限。 (尽管在某些情况下,浏览器可能可以保护您)。

如何修复

我认为10个连接(如果实际上是10个连接,对我来说尚不清楚)非常低。但是,您应该重构代码以避免使用setInterval。在安排新请求之前,应使用Promise之类的方法来跟踪请求何时结束,以防止堆积一堆请求。根据经验,除非有充分的理由,否则请勿使用setInterval。最好总是使用一些更智能的调度。

您还可能希望提高这些请求的效率,是否可以合并呼叫以检查消息和通知?