ネット麻雀システムを作ってる関係で、ソケットやストリームを多重化する方法を覚えたよ。
んで、これって実はWEBAPIに応用できるものなんじゃね?と気づいた。
PHPのプログラムはWEBAPIからデータを取得しようとすると、1つの通信が終わってからじゃないと次の通信が行えない。だけど、以下の方法を使えばIOを多重化することが出来て、結構な速度が出るプログラムになると思われる。
PHPの関数に、
1)stream_socket_client
と、
2)stream_select
って言うのがある。
WEBAPIのURLを配列にして、ひとつひとつ1)の関数に与えるとストリームが取得できる。
んで、取得したストリームをまた配列にして、2)の関数に与えると、受信できる「ストリームを返してくれる」というもの。
返されたストリームからXMLを受信し、すべてのストリームにデータがなくなったときにパーサを動かせばOK。
参考URL: http://www.ibm.com/developerworks/jp/opensource/library/os-php-multitask/index.html
---
stream_selectの使い方がまだイマイチ良くわかってないけど、結構面白いことが出来そうだね。