如何限制一次执行PHP脚本的人数?(队列,';点';系统)


How do you limit the number of people executing a PHP script at once? (Queue, 'spot' system)

我已经准备好了上传系统,但我可能面临非常高的负载,这可能会导致我们的服务器瘫痪。托管提供商将同时运行的PHP脚本的实例限制在30个左右。然而,当人们上传时,他们通常需要比预期更长的时间来完成脚本,而其他人则会收到"内部服务器错误",直到有空位为止。

我的具体问题是,有没有办法限制同时运行脚本的人数?例如,在排队系统中,只有29人同时上传(服务器不工作),而其他人只有在点空闲时才能开始上传。这怎么可能呢?

保存一个值(最好是在Memcache中,但MySQL也可以正常工作),说明有多少人在上传。它从零开始,然后当有人开始上传时,你会在开始处理上传之前递增它。上传完成后,再次递减计数器。

如果计数器高于您的阈值,请阻止人们访问上传器或发出友好的错误消息。

或者,找一个系统更好的主机。我希望这不算广告,但我使用的主机提供了更好的系统,而且几乎可以肯定比你支付给当前主机的任何费用都便宜。

你确定他们没有限制apache进程或php进程的数量吗?如果他们这样做了,你除了要求他们提高限额之外别无选择。如果它确实是对单个PHP脚本的并发执行的限制,那么您可以按照以下方式解决它。。。

有很多做同样事情的脚本。它们可以是指向单个"控制"脚本的符号链接,以便它们的内容始终相同。然后在呈现表单时随机选择其中一个脚本。