btoメモ

なんか適当に書く

IPアドレスから携帯のキャリアを高速に判定するsymfonyプラグインを作った

携帯サイトを作ってるとIPアドレスから携帯キャリアを判別することが多いですが、これを高速に判定するsymfonyプラグインを作りました。

sfMobileIPPlugin - openpear

元ネタ: PHPで高速に携帯ゲートウェイのIPから携帯キャリアを判別する - グニャラくんのグニャグニャ備忘録@はてな

やってることは大体同じです。

隣り合うIPアドレス帯をまとめている

各キャリアが公開しているIPアドレス帯は隣あった領域である事が多いので、連続したIPアドレス帯は一つにまとめるようにしてます。

これにより、検索領域が 1/3 ぐらいに減りました。

まとめたIPアドレス帯はキャッシュしている

まとめたIPアドレス帯はソートした後、キャッシュファイルに書き込むようにしてます。

前処理は最初の1回だけです。

イナリサーチ

前処理されたIPアドレス帯はソートしてあるので、バイナリサーチしてます。

インストール(symfony 1.0)

僕はsymfony 1.0を使ってるので、バイナリパッケージを用意しました。

次のコマンドでインストールできます。

$ symfony plugin-install http://svn.openpear.org/sfMobileIPPlugin/pkgs/sfMobileIPPlugin-0.0.1.tgz

インストール(symfony 1.1以降)

試してないのでわかりませんが、たぶんこんな感じ。

$ symfony plugin:add-channel openpear.org

$ symfony plugin:install openpear.org/sfMobileIPPlugin

使い方

sfMobileIP::carrier()を呼ぶとIPアドレスから判定して携帯キャリアの情報(docomo, ezweb, softbank, willcom, pc)を返してくれます。

echo sfMobileIP::carrier();

よかったら使ってくださいー。