使用PHP睡眠来优先处理某些请求-好主意还是坏主意?

使用PHP睡眠来优先处理某些请求-好主意还是坏主意?,php,Php,我正在运行一个电子商务网站,我们有时会遇到高峰负载 超过一定数量的客户后,将采取一些非常简单的过载控制措施 计划采取的行动之一是优先考虑那些购物车中有物品的顾客,原因很明显 这是通过将短睡眠(或usleep)添加到所有其他请求中完成的,但不包括购物车中有商品的客户的请求 这是个好主意吗 a) 是的,它会像梦一样工作 b) 它不会对任何事情产生重大影响 c) 不,它只会保留不必要的资源,并减缓一切 d) 那要看情况了。。。(关于什么?c-它只会不必要地保留资源,并降低速度。 睡眠不会释放资源,因为

我正在运行一个电子商务网站,我们有时会遇到高峰负载

超过一定数量的客户后,将采取一些非常简单的过载控制措施

计划采取的行动之一是优先考虑那些购物车中有物品的顾客,原因很明显

这是通过将短睡眠(或usleep)添加到所有其他请求中完成的,但不包括购物车中有商品的客户的请求

这是个好主意吗

a) 是的,它会像梦一样工作

b) 它不会对任何事情产生重大影响

c) 不,它只会保留不必要的资源,并减缓一切


d) 那要看情况了。。。(关于什么?

c-它只会不必要地保留资源,并降低速度。

睡眠不会释放资源,因为脚本仍在运行。每次用户向您的站点发出请求时,都会产生一个新的PHP线程并占用内存。运行的线程越多,使用的内存就越多。通过睡眠,您实际上通过延迟每个线程并使其运行更长时间来占用更多内存

您可以在firefox或chrome中打开开发者控制台,进入网络选项卡,然后按刷新。查看正在加载的所有网络资源,并思考如何减少加载时间和对服务器的请求数。也许你每页有10到50个查询,而实际上你只需要4到5个。优化您的站点代码和网络利用率,以加快速度


如果你发布链接,我们也可以看一看。

sleep()也是一个过程……代码优化取决于很多事情,但我不认为让一些人比其他人等待得更多可以称为优化。更好地识别应用程序中的瓶颈,看看是否可以通过优化代码、缓存、SQL查询、SQL索引、向服务器添加更多资源等来改变瓶颈。首先,什么是负载峰值?带宽、服务器cpu、文件io和数据库上的负载?您所描述的是节流。但是,它确实会降低低优先级用户的响应能力,因为脚本会为他/她暂停。您提供的选项中没有一个听起来不错。在我看来,一个好的解决方案可能是实现另一个服务器(如镜像),并以一种循环方式或负载平衡的方式为请求提供服务。有一些很好的软件,你可以放在你的Web服务器前,可以为你做这件事(如果“peak”指的是“多个连接”),这是一个黑客补丁,它不能解决问题,它只是把它埋起来,同时创建一个新的。现在,多丽丝女士的购物车上有一个0.10美元的螺丝钉,她比詹金斯先生有优先权。詹金斯先生正试图访问你的网站,购买价值500美元的电子产品,但她对反应迟缓感到恼火,并考虑到别处去。做一些更好的研究,找到真正的瓶颈并解决它,或者通过优化或升级基础设施来满足需求。是的,我知道会消耗更多内存,但是如果瓶颈是CPU呢?(从50开始的4-5个查询并不给予任何人优先于其他人,这是本文的想法)每个网络请求占用CPU,每个数据库查询占用CPU。您正试图将重点放在优先考虑一个用户而不是另一个用户上,而您应该将重点放在减少应用程序为每个用户加载的时间上。每个请求的重要性并不相同。这是非常重要的登记客户回来后,付款,并不重要,让一个新的客户,当已经有超过我们可以处理。