にほんブログ村 小遣いブログ 携帯アフィリエイトへ

マッシュアップ・サイトの作り方(4)

マッシュアップ・サイトを作る話の4回目です。

★ 検索ページを作る

さて、APIを使って楽天の商品を検索できるツールが完成しました。


流れとしては、

【検索キーワードや条件などをHTMLフォームで入れる】
  ↓
【検索用phpプログラムでキーワードなど検索情報を受ける】
  ↓
【APIに投げるリクエストURLを組み立ててリクエストを送る】
  ↓
【返ってくるXML形式のレスポンスを変数に入れる】
  ↓
【simplexml関数などを使ってXMLを分解する】
  ↓
【分解した情報で使うモノを配列に作り替える】
  ↓
【スマーティに配列を送って検索結果を表示する】

こういう感じです。


で、これがスタートのページになります。

商品検索ページ

これは更年期障害のサイトにつけた検索ページなので、
選べるジャンルカテゴリーは、医薬品関連と健康関連だけ
ラジオボタンを表示するようにしています。

楽天のジャンルは百くらいあるので、
全て表示すると、かえって検索しにくいとの判断です。

価格幅の設定も、元々の楽天のサンプルコードでは
ブランクになっていたんですが、
そうすると数字以外も入力できて、
検索がうまく行かなかったので、
ラジオボタンに変更しました。

ネットワークの負荷を軽減する

で、ここで問題になるのが、
検索によるサーバーの負荷です。

検索すると、サーバーのCPUや外部との通信で
ネットワークを使うわけですから、
いろいろ負荷がかかります。


phpプログラム自体は軽いので、さほどの負荷にはなりません。

が、APIサーバにリクエストを投げたり、
レスポンス(返答)を受けたりと言う作業には、
ネットワークの負荷がかかります。

だからかも知れませんが、ハッスルサーバーなどでは、
こう言う随時外部にアクセスするプログラムは
禁止になってます。

サーバー自体のスピードは速くても、
ネットワークにつないで情報をやりとりするのは、
どうしても遅くなるし、コストや負荷もかかりますから。


なので同じキーワードで何度も検索する場合、
検索結果を貯めて、キャッシュファイルを作った方が
良いわけです。

そんなに短時間で検索結果は変わりませんし、
ネットワークの負荷が万が一大きくなると、
自分の他のページの表示も遅くなってしまいます。

なのでキャッシュは必須ですね。


スマーティで、ページキャッシュ

そしてこれは、ページごとにキーワードに
合った商品を表示する際には、もっと問題になります。

というのも、元々このAPIツールを作っているのは、
ページにあったキーワードの商品を探してきて
それを表示する目的なんですね。


amazonや楽天には、ページに最適な商品を表示する
スクリプトというのがあるんですが、
あんまり狙ったキーワードに合ったモノは出ないんです。

なのでこちらが表示したいキーワードの商品を、
自動で表示しようと思ったのが開発動機だったんです。


検索しないのに検索するわけですから、
サーバーの負荷はできるだけ抑えたい。

そのためには絶対にキャッシュ機能は必要でした。

で、どうしたらいいか色々調べてみたんですが、
幸いスマーティ(Smarty)の機能に、
キャッシュが使える機能がありました。

仕組みとしては、

【キーワードを検索phpプログラムに投げる】
  ↓
【キャッシュがあるかどうか調べる】
  ↓
【キャッシュがあればそれを表示、無ければ検索】

こういう分岐でキャッシュを使うんですね。

ちなみにキャッシュのモードには三つあって、

・0はキャッシュしない、
・1は3600秒有効
・2は、キャッシュタイムを自由に設定できる、

というモノで、設定時間を超えていたら
再検索する仕組みになります。


キャッシュ機能を使うと、検索するたびに、
キャッシュファイルはどんどん増えていきますが、
負荷は減らせそうです。

コアサーバーは20万ファイルが上限で、
まだ10万近く余裕があるので、大丈夫そう。

いざとなったら、キャッシュを消すプログラムを
cronで動かせばいいということでOKでしょう。

これを使えば、お薦め商品ページのキャッシュを、
使う事ができます。

スポンサードリンク

Pre > マッシュアップ・サイトの作り方(3)
Next > マッシュアップ・サイトの作り方(5)

当サイトでは、第三者配信による広告サービスを利用しています。このような広告配信事業者は、ユーザーの興味に応じた商品やサービスの広告を表示するため、当サイトや他サイトへのアクセスに関する情報 (氏名、住所、メール アドレス、電話番号は含まれません) を使用することがあります。このプロセスの詳細やこのような情報が広告配信事業者に使用されないようにする方法については、ここをクリックしてください