ホームページ  >  記事  >  バックエンド開発  >  クライアントによるインターフェイスへの頻繁な呼び出しを制限するにはどうすればよいですか?

クライアントによるインターフェイスへの頻繁な呼び出しを制限するにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-06-23 13:25:592317ブラウズ

サーバー側には http インターフェースがあり、クライアントはこのインターフェースを呼び出して、post または get リクエストを開始して特定のデータを取得します。クライアントが頻繁にリクエストを開始しないように制限するために、リクエストを開始するまでに少なくとも 60 秒かかります。ここで行うことは、リクエストが開始された時間を記録し、現在の呼び出しと最後の呼び出しの時間を比較し、それが 60 秒未満の場合は、特定のステータス コードを返します。この方法以外にもっと簡単な方法はありますか?たとえば、サーバーの Apache の設定について、アドバイスをお願いします。よろしくお願いします。


ディスカッションへの返信(解決策)

これより簡単なことはありません
サービスの頻度を制限すると(Apache の応答を制限するなど)、1 人のユーザーにしかサービスを提供できないため、
そこでクライアントが 10 人いる場合、10 番目のクライアントは、最初のクライアントのリクエストから 10 分後まで応答を受け取りません
これは明らかに不合理です

これより単純なことはありません
なぜなら、ユーザーにサービスを提供するだけではできないからです。サービスの頻度は制限されています (Apache の応答を制限するなど)
クライアントが 10 個ある場合、10 番目のクライアントは最初のクライアントが応答を要求してから 10 分後まで応答を取得できません
これは明らかに不合理です

インターフェースでは、memcache または redis を使用して識別子 (IP またはユーザー ID など) を記録し、有効期限 (60 秒など) を設定します。次回アクセスしたときに、この値があるかどうかを判断し、ない場合はアクセスが許可されます。 「はい」の場合は、有効期限が切れていないことを意味します。アクセスできません。メモリの記録は高速になるはずです。

私は上記のようなことにさらされていないので、まず調べる必要があります。

この機能を実装する必要がある場合は、3 階で説明した解決策が適しています

ユーザー アクセス インターフェイスのイベントをログに書き込み、対応する制限を設けるだけです。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。