|
#ref(http://www.xmethods.net/images/logo_small.gif,around,right,nolink); [[XMethods:http://www.xmethods.com/]]は、組み込みパーツとして使えるWebサービスを無償提供してくれています。例として、[[為替情報Webサービス:http://www.xmethods.com/ve2/ViewListing.po;jsessionid=AG5BnrZ5gdcUihPAV_0j6HY2(QHyMHiRM)?key=uuid:D784C184-99B2-DA25-ED45-3665D11A12E5]]を利用してみることにしました。簡単ですね。 *** 為替情報取得クライアント(PHP) [#g0ef73f4] サンプルソース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:http://jomora.bne.jp/wp/]]の右上にちょこっと載っけました。 で、上のサンプルだとページリクエスト毎に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://jomora.bne.jp:8080/Quiz/QuizService.asmx?wsdl', false, false, array('timeout' => 2)); 'http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl', false, false, array('timeout' => 2)); -'timeout'連想配列の数字は、タイムアウトの秒数です。