0
我创建的过程需要将数据发送到soap服务。我不能继续我的下一个行动,直到我得到理想的回应。执行API调用,直到返回所需的响应
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就足够了吗?
A do/while should do the trick。但是我建议在每个循环中放一段延迟,否则你会锤击Soap服务器。此外,您可能想要指定最大尝试次数。你不想让程序陷入无限循环。 – ben
@ben,你可以发布这个答案,所以我可以授予你信用?谢谢。 – etm124