私が作成しているプロセスは、SOAP サービスにデータを送信する必要があります。望ましい反応が得られるまで、次の行動に進むことができません。
try {
$return = $soapClient->__soapCall("BulkLoadContacts",array('parameter' => $params));
foreach ($return as $r){
$upload_id = $r;
}
$process_params = array(
'ProcessID' => $upload_id,
);
$return = $soapClient->__soapCall("GetProcessStatus",array('parameter' => $process_params));
var_dump($return);
}
catch(SoapFault $fault){
$status = false;
}
上記のコードでは、BulkLoadContacts
メソッドを実行します。ProcessID
次に、応答からを取得します。その ID を取得したら、別の呼び出しを行ってプロセスのステータスを取得します。最後のダンパーは の応答を教えてくれますGetProcessStatus
。ダンパーは次のようになります。
object(stdClass)#18 (1) {
["WSProcessStatus"]=>
object(stdClass)#19 (6) {
["ProcessID"]=>
int(3313881)
["ListID"]=>
int(268207)
["ProcessName"]=>
string(20) "listrak_tempfile.txt"
["ProcessStartTime"]=>
string(23) "2012-05-16T14:22:50.643"
["ProcessCompleteTime"]=>
string(22) "2012-05-16T14:22:50.84"
["Status"]=>
string(19) "ProcessingCompleted"
}
}
最後の項目はStatus
. メソッドが「ProcessingCompleted」の値を返すまでだけ、続行します。これを達成する方法について何か提案はありますか? 単純な do-while で十分でしょうか?