楽天検索API用PHP解説(1)
楽天市場の商品検索APIから情報を取得するためのサンプルPHPプログラム(func_rakuten.php)について解説する。
このプログラムは私個人で改造して使っているモノなので、実際そのまま利用することができるハズだが、動かなくても責任は持たない使い方としては、このプログラムを呼び出して、引数を渡せば、$list_riという配列を返してくれると言う仕組みになっている。
呼び出し側の記述としては、//コンテンツ作成 楽天商品検索require_once('./func_rakuten.php');
$list_ri = rakutenxml($keywords,$minP,$maxP,$genreId,$sort,$shipping,$max_num);
という感じで、いくつかの引数を指定して呼び出せばいい。
では、何をやっているのかを解説することにする。
function rakutenxml($keywords,$minP,$maxP,$genreId,$sort,$shipping,$max_num){ここはまず、ユーザー関数の定義と引数(ひきすう)の宣言だ。
関数rakutenxmlを{}内で定義すると言う形になる。
引数の$keywords,$minP,$maxP,$genreId,$sort,$shipping,$max_numについては後述。
set_time_limit(90);
set_time_limit関数とは、実行時間の最大値を制限する関数だ。
ただ普通は30秒で制限されている処理時間を、90秒まで長くするためにこれを書いている。
ただしサーバーのPHPがセーフモードで動いている場合は無効な記述となる。
sleep(1);
sleep関数は、処理を遅らせるための関数で、ここでは1秒スリープしている。
わざわざここで、1秒ほど処理を遅らせている理由は、楽天WEBサービスのRESTリクエストの回数制限が1秒間に1回未満となっているからだWEBサービス側としては、一人のユーザーからの膨大なリクエストを受け付けると、他のユーザーからのリクエストに応えきれなくなるので、制限をしている。
このPHPプログラムは、連続して商品情報のリクエストを出すことを前提に作ったので、リクエストを出す前に1秒間処理を停止して、リクエストの間隔をあけるようにしている。
// ---------------------------------------------------------------// 楽天商品検索API用コード (PHP)楽天関数// UTF-8で保存// ---------------- 以下、設定部分 ------------------------------ //$DEVELOPER_ID = "★楽天WEBサービスのデベロッパーID★";
$AFFILIATE_ID = "★楽天市場・アフィリエイトID★";
ここは、IDを設定する部分だ。
$API_NAME = "楽天商品検索API";
// API名$API_BASE_URL = "http://api.rakuten.co.jp/rws/3.0/rest";
$OPERATION = "ItemSearch";
$API_VERSION = "2010-08-05";
楽天のWEBサービスの仕様では、バージョン情報を日付で管理している。
新しく機能を追加した場合、この日付の部分を変えて対応する。
超メジャーなバージョンアップがある場合は「3.0」のところが変わる。
多分次は結構先だと思われるが「4.0」になるんだろう。
// ---------------- 設定部分おわり ------------------------------ ////データ補完作業if($minP == ""){$minP = "0";}
if($maxP == ""){$maxP = "5000000";}
if($genreId == ""){$genreId = "0";}
if($sort == ""){$sort = "standard";}
if($keywords == null){$keywords = 'わけあり';}
if($max_num == null){$max_num = 12;}
//検索商品数(最大30)この部分は引数が空だった場合に、代替データを設定する部分だ。
この関数では、$keywords (検索キーワード)$minP (最低価格)$maxP (最大価格)$genreId (ジャンルコード)$sort (ソート順の指定)$shipping (送料無料指定) $max_num (検索結果数の上限)と言う風に変数を割り当ていているので、引数が全て空だった場合は「\0円から\500万円までの訳あり商品を、オールジャンルで、標準のソート順で、12コ取得する」と言う指定になる。
キーワードなどの検索条件が空の場合も、何か表示しておいた方がアフィリサイトとしてはいいだろう。