2

NuSOAPを使用して支払いゲートウェイのWebサービスを利用していますが、このゲートウェイのドキュメントでは次のことが必要です。

  • doPayment()メソッドに300秒以上かかる場合は、正常な応答を取得するために、すぐにgetStatus()メソッドを少なくとも3回実行する必要があります。

問題は、PHPとNuSOAPでそのタイムアウトを処理する方法がわからないということです。タイムアウトが発生した場合、NuSOAPは特定の応答を返しますか?どうすれば実際にタイムアウトになりますか?

NuSOAP呼び出しのコードは次のとおりです。

$client = new nusoap_client( 'http://webserviceurl?wsdl...' , 'wsdl');

$err = $client->getError();
if ($err)
    die('Constructor error: ' . $err);

$proxy = $client->getProxy();

$payTrans = $proxy->doPayment(array('someparams' => 'somevalues'));

// if doPayment() timed out, then run the getStatus() method

任意の入力をいただければ幸いです。ありがとうございました!

4

1 に答える 1

5

将来の参考のために自分で答えています。まず、nusoap_clientクラスのタイムアウト値を拡張する必要があります。次に、テストするメソッドの前にタイマーを開始し、終了にかかった時間と比較します。

// Extending the timeout value to 300 seconds
$client = new nusoap_client( 'http://webserviceurl?wsdl...' , 'wsdl' , false, false, false, false, 0, 300)

$err = $client->getError();
if ($err)
    die('Constructor error: ' . $err);

$proxy = $client->getProxy();

$start = time(); // starting the timer
$payTrans = $proxy->doPayment(array('someparams' => 'somevalues'));
$timing = time() - $start; // calculating the transaction time

if($timing > 90 && $timing < 310)
    // It timed out: send an email, run another method, etc
于 2012-12-19T16:55:08.537 に答える