dev.convexstyle.net

PHP アーカイブ

Zend Framework での Amazon ItemSearch with PEAR Pager

del.icio.us hatena bookmark

最近個人ワークで Amazon を使ったモノを2つ程作っていますが、1つは Zend Framework を使用して開発中。 Services_Amazon の itemSearch を使用し商品検索を行っていましたが、Zend Framework 内で各ページ 10 件表示を PEAR Pager の GET の処理で行った際に少し悩んでしまったのでメモ。


Zend Framework の細かい仕様はここでは省きますが、Zend Framework は MVC パターンに基づいて Zend_Controller_Front が URL を分析しディスパッチ処理・ルーティング処理を行います。例えば今回の URL が http://www.test.com/amazon/search/ だとすると AmazonController class 内のsearchAction 関数内で処理を行うのですが、下記の様に Pager のオプションで append を false に、fileName に GET の変数値を表す "%d" を明確に「?pageID=%d」の様に追加しないとうまく動きませんでした。


(ソースは簡略化してあります。)
$amazon =& new Services_AmazonECS4(あなたの Subscription ID);
$amazon->setAssociateID(あなたの Associate ID);
$amazon->setLocale('JP');

$options = array();
$options['Keywords'] = 'flash';
$options['Sort'] = 'salesrank';
$options['ResponseGroup'] = 'Medium';
if(isset($_GET['pageID'])) {
$options['ItemPage'] = $_GET['pageID'];
} else {
$options['ItemPage'] = 1;
}

$rs =& $amazon->itemSearch('Books', $options);

$params = array(
'itemData' => itemData 用の配列,
'perPage' => 10,
'delta' => 5,
'urlVar' => 'pageID',
'path' => 'http://www.test.com/amazon/result/',
'fileName' => '?pageID=%d',
'append' => FALSE,
'httpMethod' => 'GET',
);

$o_pager =& Pager::factory($params);
$navi = $o_pager->getLinks();
$pageNavi = $navi['all'];

こうすることで、URL が 2 ページ目から http://www.test.com/amazon/result/?pageID=2(3,4,5・・・)の様になるので無事に Services_Amazon の $options['ItemPage'] の値に GET 変数を渡すことが可能です。

今回は append を TRUE 、fileName を空白にして、デフォルトではhttp://www.test.com/amazon/result/index.php?pageID=2 になったり、append を FALSE 、fileName を空白にして http://www.test.com/amazon/result/ で GET 変数が渡らなくなったりと Zend Framework 内で上手く挙動させれなかったのですが、検索して %d が 変数値だと分かり上記の設定で解決しました。

Jugem x ASK.JP

del.icio.us hatena bookmark

久々のブログエントリー。


そして久々に会社の既存サービスに Flash を一切使わない機能をゴリゴリ開発。
ブログサービス jugemASK.JP の動画投稿 API を使用してローカル動画投稿機能を実装してみました。Open な API では無いですがよく出来ている API だったので、スムーズに開発出来ました。既存のサービスのソースも追えたので、結構良い勉強になりました。


Jugem x ASK.JP


【使用技術】
PHP、Smarty、PEAR、MySQL、CSS、Javascript、HTML、PhotoShop、ASK API


【担当領域】
PHP、Smarty、PEAR、MySQL、Javascript、ASK API 辺り

HTTP_Request で HTTP レスポンス情報の評価

del.icio.us hatena bookmark

明けましておめでとうございます。

前回に引き続き、flickr.interestingness.getList API と Flash の関係について。
flickr.interestingness.getList はクオリティの高い写真を日付ごとに最大 500 件取得できる点ですが、中には Source URL で取得出来る最も重要な b サイズ(でかい画像サイズ)の画像がアップロードしたユーザーが画像を削除した際に取得出来ない場合があるようで、過去にさかのぼるにつれてその頻度は高いようです。
Flash で Viewer を作る以上、そういった画像は極力省きたいので一度 PHP などのプログラム側で HTTP レスポンスからの情報を評価する必要があります。Flickr の仕様上、画像が存在しない場合はHTTP リスポンスコードで 302(Moved Temporarily)が返って画像が無い場合の GIF 画像(photo_unavailable.gif)が返ってしまうので、Flash ではこういった GIF 画像も画像と認識して読み込んでしまい表現上都合が良くないので、cron で定期的にそういった画像を省いた状態で新規に xml を新たに書き出した方が良さそう。でもいちいちリクエストをするので処理は重いのがネックですね。curl --head でも同様な処理を行ったがそんなに処理速度が変わらなかった。何か他の方法は無いだろうか。

続きを読む "HTTP_Request で HTTP レスポンス情報の評価" »