エンタープライズ レベルの PHP アプリケーションを実行しています。これは、上司がアップグレードを拒否し、機械が常に 2 ~ 3 のシステム負荷 (そう、Linux) で実行されているインフラストラクチャ上で何千人ものユーザーがオンラインになっているブラウザ ゲームです。とにかく、それは本当の問題ではありません。実際の問題は、一部のユーザーがサーバーがロードされるまで待機し (プライム タイム)、マウス クリッカーを持ってきて、同じ送信ボタンを 10 ~ 20 回クリックし、サーバーがまだ動作している間に同時に 10 ~ 20 の要求を送信することです。最初のリクエストを生成するため、キャッシュとデータベースは更新されません。
現在、各リクエストに2分間有効な出力変数があり、基本的にmemcache内のフラグである「ミューテックス」ロックがあり、見つかった場合はスクリプトの実行をさらにブロックしますが、マウスクリッカーはで非常に多くのリクエストを行いますそれらがほぼ同時に実行されるのは、私にとって大きな問題です。
この問題に対処している StackOverflow 関係者の大半は、お元気ですか。Cookie/セッションにフラグを立てることを考えていましたが、サーバーが過負荷になると同じ問題が発生すると思います。最適化は不可能です。ソースは 7 年前のもので、非常に最適化されており、ほとんどのページでクエリが実行されず (キャッシュから実行されています)、特定のユーザー入力でデータベースにクエリを実行するだけです。
はい、実際のオブジェクトのない手続き型コードです。マシンは PHP 5 を実行しますが、コード自体は PHP 4 に近いものです。古いものであることはわかっていますが、この混乱全体を書き直すリソースを惜しむことはできません。ええ、私は基本的に古い穴にパッチを当てています。しかし、私が知る限り、これはロードされた PHP Web サイトの一般的な問題です。
PS: 送信時に JavaScript を使用してボタンを無効にすることはできません。本当の詐欺師は上級ユーザーです。そのうちの 1 人は、ボット クリッカーを作成し、それを Google Chrome 拡張機能としてパックしました。私がどう対処したかは聞かないでください。