人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

楽天API(というか、PHP)の質問です。

初歩的なことかもしれませんが、Wordpressの記事内で、
<?php
$keyword = "はてな";
$limit = 3;
echo search_rakuten($keyword,$limit);
?>
のように、商品画像を取得する際、このコードの下に別のコード(例:キーワードの中だけを変えたり)を使って、
別の楽天商品を表示させようとすると、
ページ全体がエラーのようになってしまいます。

これは何がいけないのでしょうか?

●質問者: うんこ
●カテゴリ:ウェブ制作
✍キーワード:API echo keyword PHP wordpress
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● うぃんど
●100ポイント ベストアンサー

楽天APIの連続利用は許されておらず、1秒間に1回までとなっていますので、

下記のように次の検索は1秒待った後に行うように工夫しておかなければ、

2回目のほうでエラーとなってしまいます

<?php
$keyword = "はてな";
$limit = 3;
echo search_rakuten($keyword,$limit);
sleep(1);
$keyword = "ダイアリー";
$limit = 3;
echo search_rakuten($keyword,$limit);
?>
◎質問者からの返答

回答ありがとうございます!



1秒待ったあとの処理ということは、例えば同じ記事内で10つ違うコードを使いたいときだと、

最終的にsleep(1)がたくさんになってしまって、記事を表示するのにとても時間が掛かりますよね。

つまり、何度も記事の中で使うような手法は、本来向いていないということなのでしょうか?



下記が使用の一例です。



---------------------------------



<?php
$keyword = "はてな";
$limit = 3;
echo search_rakuten($keyword,$limit);
?>



文章が100字ほど



<?php
sleep(1);
$keyword = "ダイアリー";
$limit = 3;
echo search_rakuten($keyword,$limit);
?>



文章が100字ほど



<?php
sleep(1);
$keyword = "人力検索はてな";
$limit = 3;
echo search_rakuten($keyword,$limit);
?>



・・・中略・・・



<?php
sleep(1);
$keyword = "はいく";
$limit = 3;
echo search_rakuten($keyword,$limit);
?>


---------------------------------------------


2 ● あすか
●18ポイント

コメントにて追加情報をいただきありがとうございます。


APIバージョンが古いのではないでしょうか?

$version = '2010-09-15';

でお試しください。


また、APIエラーなら、出力中の「共通パラメーター」のStatusにエラーが帰ってきますので、この値を表示・確認をお願いします。

◎質問者からの返答

アドバイスありがとうございます!


早速バージョンを変えてみました。


とりあえず、エラーの件は最初の回答の方のが原因だったようで、改善しました!


3 ● taroe
●18ポイント

search_rakutenというのは自作の関数なのでしょうか?

楽天のAPIは1秒に1回ですが、今回はこれでエラーになってるとは考えられないです。

PEARの Services_Rakutenを改造して同様のことを行ってますが問題なく表示されます。

search_rakutenが自作の関数なら、その中身の検証をした方が良いでしょう。

また、エラーになるということですが、なんのエラーかどうかを地道に調べるべきだと思います。


php.iniで、エラーレベルを変更し、またエラーログを出力するように設定すれば

現状でも何かのエラーが出てくると思います。

http://pc.casey.jp/archives/2174

また、楽天APIから返されるリターンコードも見ることをお勧めします。

上記のように1秒のSLEEPを入れて動作するのでしたら、1リクエスト1秒の制限です。

http://webservice.rakuten.co.jp/faq/

ここの後半にも書かれているように、通常このようなことを行う場合はデータをキャッシュして対応します。

Amazonでも同じようなことができます。やっているところはデータキャッシュを持つようにしてリクエスト数を

減らしてます。

◎質問者からの返答

アドバイスありがとうございます!


エラーの件は、最初の方のコメントで無事解決しました。


…とは言え、今後の勉強の参考になる助言感謝です!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ