ホームページ >バックエンド開発 >PHPチュートリアル >MySQL の設計、スクリプトの実行間隔の統計。

MySQL の設計、スクリプトの実行間隔の統計。

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

RSS プログラムを持っていますが、RSS を購読しているのが他の Web サイトのサーバーなのか、それとも一般の顧客がブラウザを通じて開いて実行しているのかを計算したいと考えています。
現在のアイデアは、各 IP アドレスのアクセス頻度をカウントして区別することです。他の Web サイトのサーバーが私の RSS を購読する場合、自動プログラムで定期的に実行する必要があります。実行間隔は 60 分ごと、または 90 分ごとなど一定の間隔です。

$ip=$_SERVER['REMOTE_ADDR'];

この場合、mysql データベースはどのように設計すればよいでしょうか?現在のアクセス時間 - 前回のアクセス時間; 前回のアクセス時間 - 前回のアクセス時間 (各スクリプトを開く完了時間の誤差はプラスまたはマイナスであることも考慮する必要があります)数秒) ... この状況を 5 回カウントすると、その IP は自動プログラムであり、次回からカウントする必要はないと判断できるでしょう。


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

2つのフィールド: ip、time (unix timestamp)
判定条件: 同じipの場合 (max(time) - min(time)) / count(*) = avg (時間) - min(時間)
アルゴリズムの基礎: 等差数列の性質

実際には、User-Agent 情報も判断できます。

2つのフィールド: ip、time (unix timestamp)
判定条件: 同じipの場合 (max(time) - min(time)) / count(*) = avg(time) - min(time)
アルゴリズムベース: 等差数列の性質



2 つの自己セグメント、それは実現可能ですか?コードを教えていただけますか?

私のレベルは高くなく、当初は「ip; 最終アクセス時刻(今回のアクセス時刻 - 最終アクセス時刻、計算に使用); 2 アクセス時刻差; 平均アクセス時刻差; is_sever(デフォルト値)」の 5 つのフィールドが欲しかったのですが、 0、サーバーの場合は 1 にアップグレードされ、次回同じ IP にアクセスするときに再度計算する必要はありません)"

これは間違いなくサーバーであり、別のテーブルに記録される必要があります(サーバーリストなど)。
まず、モデレーターは、サーバーかどうかが判断されないアクセスがあるたびに、IP とアクセス時間がテーブル (たとえば、アクセスログ) に書き込まれると述べました。各書き込み後に、サーバーがアクセスするかどうかを判断します。 (通常、判断には数回かかります)
「はい」の場合は、サーバーリストにレコードを挿入し、アクセスログ内の IP に対応するレコードを削除します。
このサーバーに再度アクセスするときは、まずサーバーリストにこの IP があるかどうかを確認し、そうである場合はアクセスログに書き込まれません。

さらに、ユーザー エージェントを使用して、サーバー アクセスが利用可能かどうかを判断できます。

サーバーアクセスとは何ですか?
RSS を購読するサーバーは何ですか?
または、どの Web サイトが独自のデータベースに RSS を保存しますか?

さらに、ユーザー エージェントを使用して、サーバー アクセスが利用可能かどうかを判断できます。


サーバーアクセスとは何ですか?
RSS を購読するサーバーは何ですか?
または、どの Web サイトが独自のデータベースに RSS を保存しますか?





サーバーアクセスとは何ですか?率直に言うと、誰かがブラウザや RSS リーダーで開くのではなく、自動プログラムを使用して私の RSS を取得したのです。
RSS を購読するサーバーは何ですか?あるいは、RSS を独自のデータベースに保存する Web サイトの種類は何ですか?

最後の 2 つの質問はもう気にしません。異なる IP を持つ自動プログラムが Web サイトの RSS 情報を取得している数を数えたいだけです。ユーザーエージェントはCURLなどで模倣できますが、自動プログラムの共通点は99%がcronプログラムで定期的にアクセスされてキャプチャされることだけなので、そのアクセス時間を解析するプログラムを作りたいと思っています。異なるIPの各間隔で、それが自動プログラムであるかどうかを判断しますか?もちろん、管理とデータ分析を容易にするために、ログを使用しないことが最善です。

ありがとうございます。


なんて言うの?どのような方法を使用すればよいでしょうか?フィールドは2つで大丈夫でしょうか?

したがって、2 つのフィールドで仕訳帳のニーズを満たすことができます
分析結果も同じテーブルに保存するかどうかは、あなた次第です。その場合は、もちろんいくつかのフィールドを追加する必要があります

したがって、2 つのフィールドで仕訳帳のニーズを満たすことができます
分析結果も同じテーブルに保存するかどうかについては、あなた次第です。その場合は、もちろんいくつかのフィールドを追加する必要があります



もちろん、それは実行中のアカウントではありませんか?質問は深刻です。考え方もわかりやすく説明されていますが、自分でコードを書くのにあまり自信がないし、どのようにデータベースを設計するのが一番合理的でしょうか?エビ、私に提案をしてください。

アクセス情報を登録する、もちろん日記です
挿入するだけで、分析や計算は通常1回の更新だけで済みます
上手くやればviewも使えます

登録を日記として扱わないと、最初に場所を選択してから更新する必要があります 変更します
最後に分析して計算します

アクセス情報を登録します、もちろんそれは実行中のアカウントです
挿入するだけで、分析と計算は通常 1 回の更新だけで済みます
そうすればまあ、ビューを使用することもできます

アカウントを実行するための登録とみなさない場合は、最初に選択して配置し、次に更新して変更する必要があります
、最後に分析して計算する必要があります

用語が専門的すぎるので共有できますか。データベース構造と関連する挿入、更新、選択コードは?ありがとうございます
投稿しました。それだけです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。