ip2country
テーブルを使用して、自分のウェブサイトのユーザーの国旗を表示しようとしています。MySQLで長いIPに変換する
私が思いついたもっとも簡単なことは、ユーザーがセッションテーブルから取得し、それぞれのIPが特定の範囲内にあるかどうかを確認するSQLステートメントを作成して国/フラグを把握することです。
オンラインで300人のユーザーが表示され、セッションテーブルからフェッチして国を照会してフラグを表示すると、大きなメモリが使用されるため、シンプルですが危険です。
SELECT
s.session_ip,
ipc.*
FROM
session AS s
LEFT JOIN ip2country AS ipc
ON ipc.ip_lo <= s.session_ip AND ipc.ip_hi >= s.session_ip
WHERE
s.session_time > '".(time() - 60))."'
今では、ip2country
テーブルに保存されたIPアドレスが整数であるため、上記のクエリが間違っていることは明らかです例えば:
私はip2long()
でIPからlong型に変換する方法を知っていますが、MySQLには同等のメソッドがありますので、2つのクエリを実行する必要はありませんか?
まだ私が過負荷および問題を持って、上の任意の例をお楽しみくださいオンラインユーザーの旗を表示しています! –
おそらくこの質問の範囲外でしょうか? –