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

时间:2012-01-25 00:18:51

标签: php mysql web-applications file-upload upload

我已准备好上传系统,但是我可能面临很高的负载,可能会导致我们的服务器崩溃。托管服务提供商将同时运行的PHP脚本的实例限制为大约30个。但是,当人们上传时,他们通常需要比预期更长的时间才能完成脚本,并且其他人会被给予“内部服务器错误”,直到某个位置被释放起来。

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

2 个答案:

答案 0 :(得分:4)

保存一个值(理想情况下在Memcache中,但MySQL工作正常),表示有多少人正在上传。它从零开始,然后当有人开始上传时,在开始处理上传之前递增它。上传完成后,再次递减计数器。

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

或者,找到具有更好系统的主机。我希望这不算作广告,但the host I use提供了更多,更好的系统,而且几乎可以肯定比你当前主机支付的费用更便宜。

答案 1 :(得分:1)

你确定他们没有限制apache进程或php进程的数量吗?如果他们这样做了,你可以做的不多,但要求他们提高限额。如果它真的是对单个PHP脚本的并发执行的限制,那么你可以解决它如下...

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