제가 만드는 프로세스는 비누 서비스에 데이터를 보내야합니다. 나는 바람직한 반응을 얻을 때까지 다음 행동을 진행할 수 없다.원하는 응답이 반환 될 때까지 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이 트릭을 수행해야합니다. 하지만 각 루프마다 지연을 가하는 것이 좋습니다. 그렇지 않으면 Soap 서버를 망치게됩니다. 또한 최대 시도 횟수를 지정하려고합니다. 프로그램을 무한 루프에 얽매이지 않으려 고합니다. – ben
@ben, 답변으로 게시하여 크레딧을 수여 할 수 있습니까? 감사. – etm124