У меня есть довольно простой кусок кода PHP
$xml = file_get_contents($url, false, $context);
$response = simplexml_load_string($xml);
$status_response = $response->xpath('/PollSessionResponseDto/Status');
$answer = $status_response[0];
while ($answer<>"UpdatesComplete") {
sleep(2);
$answer = $response->xpath('/PollSessionResponseDto/Status')[0];
}
$itenaries = $response->xpath('/PollSessionResponseDto/Itineraries/ItineraryApiDto');
я например, чтение XML-файла, и я только хочу продолжить читать дневники, если статус в файле XML — «UpdatesComplete». Если статус «UpdatesPending», я в основном хочу подождать 2 секунды. Затем проверьте еще раз и подождите еще 2 секунды, если это необходимо.
Однако я в конечном итоге в бесконечном цикле. Я проверил мой $answer
переменная, и кажется, что я получаю строку, которую я хочу проверить (UpdatesPending или UpdatesComplete).
Кто-нибудь может сказать мне, что я делаю не так?
Значение $answer
будут никогда изменить внутри цикла, потому что вы никогда не перезагрузите файл XML с удаленного хоста.
do {
$xml = file_get_contents($url, false, $context);
$response = simplexml_load_string($xml);
$answer = $response->xpath('/PollSessionResponseDto/Status')[0];
} while ($answer != "UpdatesComplete" && slee(2));
Других решений пока нет …