У меня есть PHP-код, который вызывает SOAP-запрос на удаленный сервер. Удаленный сервер обрабатывает запрос SOAP, и затем я могу получить результаты.Подождите, пока страница PHP завершит обработку запроса SOAP в фоновом режиме, а затем выполнит следующий оператор?
В идеале я хотел бы вызвать запрос SAOP, подождать 5 секунд, а затем перейти к поиску результатов. Причина заключается в том, что удаленный сервер занимает пару секунд, чтобы завершить обработку. Я не контролирую удаленный сервер.
В настоящее время у меня есть этот код:
$object = new Resource_Object();
$identifier = $_GET['id'];
$object->sendBatch($id));
sleep(5);
$results = $object->getBatchReport();
echo $results;
Проблема с выше кодом sendBatch занимает несколько секунд. После добавления сон (5) для загрузки страницы требуется 5 секунд дольше, но результаты пока не отображаются. Если я снова загружу страницу или позвоню getBatchReport() с другой страницы, результаты покажут.
Я предполагаю, что это имеет какое-то отношение к безгражданству HTML, которое заставляет всю страницу выполнять сразу. Я рассматривал использование «буферизации вывода», но я не совсем понимаю, для чего нужна буферизация вывода.
Я также рассматривает возможность использования JQuery и Ajax, чтобы непрерывно опрашивать getBatchReport(), но проблема в том, что мне нужно, чтобы вызвать эту страницу из другого места, и как sendBatch() растет 5 вторая задержка может идти, вероятно, до 2 минут. Я не думаю, что Ajax будет работать, если я позвоню этой странице удаленно (эта страница уже вызывается в фоновом режиме, порожденном /dev/null 2> ).
У меня нет контроля над удаленным сервером, указанным в процедуре sendBatch, и насколько я знаю, он не имеет функций обратного вызова. Я бы предпочел не использовать CRON, потому что это означало бы, что я должен все время запрашивать удаленный сервер.
Любые идеи?