我已准备好上传系统,但是我可能面临很高的负载,可能会导致我们的服务器崩溃。托管服务提供商将同时运行的PHP脚本的实例限制为大约30个。但是,当人们上传时,他们通常需要比预期更长的时间才能完成脚本,并且其他人会被给予“内部服务器错误”,直到某个位置被释放起来。
我的具体问题是,有没有办法限制同时运行脚本的人数?例如,一个排队系统,其中只有29人同时上传(服务器保持运行),而其他人只能在点数空闲时开始上传。这怎么可能?
答案 0 :(得分:4)
保存一个值(理想情况下在Memcache中,但MySQL工作正常),表示有多少人正在上传。它从零开始,然后当有人开始上传时,在开始处理上传之前递增它。上传完成后,再次递减计数器。
如果计数器高于您的阈值,请阻止人们访问上传者或提供友好的错误消息。
或者,找到具有更好系统的主机。我希望这不算作广告,但the host I use提供了更多,更好的系统,而且几乎可以肯定比你当前主机支付的费用更便宜。
答案 1 :(得分:1)
你确定他们没有限制apache进程或php进程的数量吗?如果他们这样做了,你可以做的不多,但要求他们提高限额。如果它真的是对单个PHP脚本的并发执行的限制,那么你可以解决它如下...
有很多脚本可以做同样的事情。它们可以是单个“控制”脚本的符号链接,以便它们的内容始终相同。然后在呈现表单时随机选择一个脚本。