Last-modified: 2005-03-05 (土) 15:20:36 (6984d)
logo_small.gif

 XMethodsは、組み込みパーツとして使えるWebサービスを無償提供してくれています。例として、為替情報Webサービスを利用してみることにしました。簡単ですね。

為替情報取得クライアント(PHP)

  サンプルソース1

<?php
  require_once('SOAP/Client.php');
  $soapclient = new SOAP_Client(
    'http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl',
    true);
  $params = array('country1' => 'new Zealand', 'country2' => 'japan');
  $Result = $soapclient->call('getRate', $params);
  echo "1NZ$ = " . $Result . "円";
?>
  • PEARのSOAPライブラリを使っています。
  • 私のblogの右上にちょこっと載っけました。

 で、上のサンプルだとページリクエスト毎にWebサービスを呼び出しちゃうわけですが、そうすると遅いし、Publicサーバにも負荷がかかっちゃうということで、1時間毎に更新するように変更。

  サンプルソース2

<?php
  require_once('SOAP/Client.php');
  $fp = @fopen("exchangeNZD.dat","r+");
  $data = split(",", fgets($fp));
  $lastupdatetime = $data[0];
  $Result = $data[1];

  if ($Result == null || $lastupdatetime == null
      || (time() - $lastupdatetime) > 3600) {
    $soapclient = new SOAP_Client(
      'http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl',
      true);
    $params = array('country1' => 'new Zealand', 'country2' => 'japan');
    $Result = $soapclient->call('getRate', $params);

    rewind($fp);
    flock($fp, LOCK_EX);
    fputs($fp, time() . ',' . $Result);
  }
  fclose($fp);
  echo $Result . "円 = 1NZ$";
?>

 なんかこないだ、XMethodsがサイトごとDownしてたんですよ。そうしたときに、このPHPコードを貼り付けていたページも表示がおかしくなっちゃって…。タイムアウトを設定しないといけないみたいですね。

  サンプルソース3(抜粋)

$soapclient = new SOAP_Client(
  'http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl',
  false, false, array('timeout' => 2));
  • 'timeout'連想配列の数字は、タイムアウトの秒数です。

添付ファイル: fileexchangeRates.php 3122件 [詳細]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS