我正在运行企业级PHP应用程序。这是一个浏览器游戏,在我的老板拒绝升级并且机器在任何时候都在2-3系统负载(yep linux)上运行的基础架构上有成千上万的用户在线。总之,这不是真正的问题。真正的问题是,有些用户等待服务器加载(黄金时间),他们带来他们的鼠标答题器,他们点击相同的提交按钮10 - 20次,同时发送10-20请求,同时服务器仍然是产生初始请求,从而不更新缓存和数据库。PHP处理并发性问题
目前我有每个请求的输出变量,这是有效的2分钟,我有“互斥锁”,这基本上是一个标志内memcache,如果发现阻止进一步脚本的执行,但鼠标喀makes声如此多的请求,他们几乎同时运行这对我来说是一个大问题。
你是怎么回事,大多数StackOverflow的人都在处理这个问题。我正在考虑标记Cookie /会话,但如果服务器超载,我想我会遇到同样的问题。优化是不可能的,源代码已经7年了,并且已经过优化,大多数页面都没有查询(从缓存中运行),并且只能在某些用户输入上查询数据库,就像我试图阻止的那样。
是的,它是没有真正的对象的程序代码。机器运行PHP 5,但代码本身更多的是PHP 4.我知道,我知道这是旧的东西,但我们无法腾出重写这整个混乱的资源,因为大多数原始开发人员都知道这些东西是如何交织在一起的是的,我基本上修补旧洞。但据我所知这是加载PHP网站的一般问题。
P.S:禁用javascript提交按钮不是一个选项。真正的骗子是高级用户。其中一人写了一个机器人点击器,并将其打包为Google Chrome扩展程序。不要问我如何处理。
你是怎么处理那个..? :) –
我使用websockets。每个请求进程模型对这类事情来说都很不合适。 – rdlowrey
好的应用程序是旧的,它没有现代网站使用的花哨的MVC/Bigpipe/JSON/HTML5历史thingie。它有太多的“修补程序”,只是把这个接口放在 – Sk1ppeR