2007年5月28日月曜日

PHP at Yahoo!

Yahoo!(米)でphpを採用しているというのは有名な話ですが、このたびPHPのカンファレンスにてYahoo!がどのようにPHPを使っているかのプレゼン資料が公開されたそうです。

以下のサイトにてその邦訳版が読めます。

PHP at Yahoo!を読む

Yahoo!のような世界一のポータルサイトと自分が仕事で関わる小中規模のサイトではまったくスケールが違いますが、高速化や安定運用の考え方からphp.iniの設定内容といった細かいところまで、いろいろな点で参考になりました。

アジェンダのみなのでさっと読むことができます。PHP使いの方は目を通しておくと良さそうです。

2007年5月16日水曜日

PHPでIPアドレスを扱うライブラリ(Pear::Net_IPv4)

実際に使ったわけではないんですが、PHPでIPアドレスの計算などをする場合はPearのNet_IPv4というライブラリが便利そうです。
http://pear.plus-server.net/package.networking.net-ipv4.html
マニュアルをちらっと見ただけでもかなり使えそうな感じが分かります。将来使う可能性大なのでメモしておきます。

MySQLでIPアドレスを扱う(INET_ATONとINET_NTOA)

たとえば以下のようなテーブルがあったとします。A,B,C社はそれぞれ、ip_fromからip_toまでのIPアドレス帯域を持っているという意味です。
company_table
companyip_fromip_to
A社192.168.1.1192.168.1.254
B社192.168.2.1192.168.2.254
C社192.168.3.1192.168.3.254

「192.168.2.123」のIPアドレスが、どの会社の帯域に含まれるのかを検索したい場合、INET_ATONというMySQL関数が使えます。

select * from company_table
where INET_ATON(ip_from) <= INET_ATON("192.168.2.123") and INET_ATON(ip_to) >= INET_ATON("192.168.2.123");

上記のSQLを実行すると、B社が結果で返ってきます。
INET_ATON(たぶんAddressTONumberの略)はネットワークアドレスを10進数に変換してくれる関数です。数値に変換することで、SQLでのネットワークアドレスの扱いがぐっと楽になります。ちなみに逆バージョンのINET_NTOAというのもあります。
http://dev.mysql.com/doc/refman/4.1/ja/miscellaneous-functions.html