Дождаться, пока страница PHP завершит обработку SOAP-запроса в фоновом режиме, а затем выполнить следующий оператор? - PullRequest
0 голосов
/ 16 декабря 2010

У меня есть код PHP, который вызывает запрос SOAP к удаленному серверу. Удаленный сервер обрабатывает запрос SOAP, и я могу получить результаты.

В идеале я хотел бы позвонить в SAOP-запрос, подождать 5 секунд, а затем пойти и поискать результаты. Причина в том, что удаленному серверу требуется несколько секунд, чтобы завершить его обработку. У меня нет контроля над удаленным сервером.

В настоящее время у меня есть этот код:

$object = new Resource_Object();
$identifier = $_GET['id'];
$object->sendBatch($id));
sleep(5);
$results = $object->getBatchReport();
echo $results;

Проблема с приведенным выше кодом заключается в том, что sendBatch занимает несколько секунд. После добавления sleep (5) страница загружается на 5 секунд дольше, но результаты все равно не отображаются. Если я снова загружаю страницу или вызываю getBatchReport () с другой страницы, результаты есть.

Полагаю, это как-то связано с отсутствием состояния HTML, которое приводит к одновременному выполнению всей страницы. Я подумал об использовании «буферизации вывода», но я не совсем понимаю, для чего нужна буферизация вывода.

Я также рассматривал возможность использования jQuery и Ajax для непрерывного опроса getBatchReport (), но проблема в том, что мне нужно вызывать эту страницу из другого места, и когда sendBatch () увеличивается, 5-секундная задержка может пройти до примерно 2 минут. Я не думаю, что Ajax будет работать, если я вызову эту страницу удаленно (эта страница уже вызывается в фоновом режиме, порожденном / dev / null 2> & 1 & ).

У меня нет контроля над удаленным сервером, указанным в подпрограмме sendBatch, и, насколько я знаю, у него нет функций обратного вызова. Я бы предпочел не использовать CRON, потому что это означало бы, что я должен все время опрашивать удаленный сервер.

Есть идеи?

1 Ответ

0 голосов
/ 16 декабря 2010

Я был слишком оптимистичен, когда думал, что 5 секунд сделают эту работу. После повторного тестирования я обнаружил, что на самом деле 15 секунд - более реалистичное значение. Сейчас работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...