2008/12/11 木曜日

楽天API とPHP5で商品検索

カテゴリー: PHP5, 楽天API — admin @ 13:49:31 晴のち曇

楽天APIを使って商品を検索する機能を作った。
データの取得はいろなサイトのサンプルを参考にすると意外に簡単に実現できる。
手間取ったのは検索数の取得だ。
simplexml_load_string関数で$xmlにデータを格納できたら、
$xml->Body->ItemSearch->Items->Item[0]->itemName
などのようにして商品名は確認できる。
検索数はcountというフィールド名にあることは出力パラメータからわかっているが、
$xml->Body->ItemSearch->Items->countとしても何もない。
リクエストURLを作成して、ブラウザで結果を表示させると名前空間が違うことがわかった。

$xml->Body->ItemSearch->count

として、結果をvar_dump関数で確認すると、

object(SimpleXMLElement)#7 (1) {
  [0]=>
  string(4) “6206″
}

と表示される。

print $xml->Body->ItemSearch->count;

では、6206だけが表示される。
念のため、

$count =  (string)($xml->Body->ItemSearch->count);

として検索数を取得できた。

// PHP5
$tmpData = file_get_contents(‘ここに楽天APIの形式のURLを記述’);
$tmpData = str_replace(‘header:Header’, ‘Header’, $tmpData);
$tmpData = str_replace(‘itemSearch:ItemSearch’, ‘ItemSearch’, $tmpData);
$xml = simplexml_load_string($tmpData);

// 検索数を取得
$count =  (string)($xml->Body->ItemSearch->count);

2008/5/23 金曜日

osCommerce alter PHP5対応 backup.phpが動作しない

カテゴリー: Apache, PHP5, osCommerce — admin @ 0:57:34 晴のち曇

管理画面のデータベースバックアップ機能が動作しない。
バックアップを実行すると画面が白く表示されるだけだ。
PHPプログラムにはミスがなく、設定が間違っていそうだとは思ったが、
調べてみると原因が2つもあって、修正に時間がかかった。

ひとつめはメモリーリミットの設定。PHP5.2のデフォルトが124Mらしいので、
そのとおりに設定したがダメ。
PHPにメモリーリークがあるときの設定が、
「-1」(無制限)なので、これを設定した。
このスクリプトを実行するときだけの設定にするため、設定をPHPファイル内部に記述。

ふたつめの設定変更はプログラムの実行時間の制限。
通常30秒に設定されているが、修正したosCommerceのデータ処理は105秒かかった。
15秒足して120秒に変更した。

pleskを使用したサーバなので、

vi /var/www/vhosts/ドメイン/conf/vhost.conf
vi /var/www/vhosts/ドメイン/conf/vhost_ssl.conf

これらのファイルに
<Directory /var/www/vhosts/ドメイン/httpdocs>
    php_admin_flag safe_mode off
    php_admin_value max_execution_time 120
    php_admin_value max_input_time 120
</Directory>

を書き込んで

最後に、ファイルを読み込ませて、
/usr/local/psa/admin/sbin/websrvmng –reconfigure-vhost –vhost-name=ドメイン

Apacheを再起動した。
service httpd restart graceful

これでバックアップできた。

2008/5/19 月曜日

oScommerce alter の PHP5, MySQL5 対応作業

カテゴリー: PHP5, osCommerce — admin @ 0:11:33 曇時々晴

PHP5対応作業も、MySQL対応作業も順調に終わり先日納品したが、
なぜか、メールが送信できなかった。開発環境では十分にテストして
送信に問題はなかったのだが、調べてみるとPHPのsafe_modeにひかかっていた。

この設定になるとmail関数の5番目のパラメータが無効化されるため、
5番目のパラメータを使用する「sendmail」の設定(osCommerce管理画面)ではメールが送信できない。
苦し紛れに「smtp」に設定して送信しても、
メールが2重に送信される不具合がでるのでやめたほうがいい。

safe_modeをonのまま正常にメールを送信するには送信部の大幅な書き換えが必要なため、
オープンが近い今回はやめて、safe_modeを下記の手順でoffにした。
サーバのコントロールパネルがPleskなので他のサーバとは勝手が違う。

vi /var/www/vhosts/ドメイン/conf/vhost.conf
vi /var/www/vhosts/ドメイン/conf/vhost_ssl.conf

ssl用にもファイルを作って、必要なディレクトリに対して、必要な項目だけを設定する。

<Directory /var/www/vhosts/ドメイン/httpdocs>
 php_admin_flag safe_mode off
</Directory>

上記のようなかんじでSSL側も同じものを設定する。

/usr/local/psa/admin/sbin/websrvmng –reconfigure-vhost –vhost-name=ドメイン
service httpd restart

最後に、この順番で設定ファイルを読み込み、Apacheを再起動するとsafe_modeがOffになる。

 

 

© 2003-2010 Yorinobu Nagata. This website powered by  Convert time: 0.947 sec.