Ответ и формирование post запроса в скрипте, вызванном методом post

Dl

Новичок
Ответ и формирование post запроса в скрипте, вызванном методом post

Добрый вечер!
Не знал, как лучше назвать тему...

Объясню задачу. Есть веб-сервис (SOAP-сервер, скажем server) и клиентский php-скрипт (client), который отвечает на запросы server.
Обмен данными между ними должен происходить по следующей схеме:
server посылает post-запрос на client, client должен сразу послать ответ (client_response) в виде xml, потом произвести некоторые вычисления и в свою очередь сформировать post запрос на server и получить от него ответ (server_response).

Пытаюсь реализовать так:
client_response отдается командой echo, после этого открывается сокет, отправляется запрос на server и читается server_response.
Проблема в том, что client_response не отдается до отработки скрипта, то есть запрос на server происходит раньше отдачи ответа.
Пробовал работу с сокетами заменить curl-ом, результат такой же.
Можно как-то побороть эту проблему? Может можно как-то указать server, что следует закрыть соединение?
Как вариант, можно запросы писать в базу и другим скриптом по таймауту их отправлять. Но это "выход на случай, если выхода нет".

PHP Version 5.2.4, поддержки SOAP нет, PEAR не установлен.

P.S. Задача из области обработки e-commerce-заказов при асинхронных запросах
 

Alexandre

PHPПенсионер
erver посылает post-запрос на client, client должен сразу послать ответ (client_response)
с логикой (или терминологией) должно быть все наоборот:
Сервер - должен ожидать запросы, клиентский скрипт посылать их.

Реализуется так:
сервер - простой скрипт, который ожидает запросы,
запросы приходят в xml, Content-Type = soap/xml
по этому сам контент читается из потока
PHP:
$roughHTTPPOST = file_get_contents("php://input");
отдается с заголовком Content-Type = soap/xml можно простым echo()
не забывай отдавать заголовок Content-Lenght = (длинна контента)

клиент - скрипт, который отправляет запрос на сервер. Отправка идет либо через curl либо через сокет, как ты и описывал.
Не забывай отправлять заголовки:
Content-Type=soap/xml
Content-Lenght=(число=длинне контента в байтах)
между заголовками и контентом - должна быть пустая строка \n
 

Dl

Новичок
Автор оригинала: Alexandre
с логикой (или терминологией) должно быть все наоборот:
Наверно с терминологией:)

Я читаю контент из $HTTP_RAW_POST_DATA, все заголовки отдаю.

Тогда другой вопрос: как сервер должен уведомить клиента, что нужно посылать запрос (если их не получится реализовать в одном скрипте)?
Схема вот такая: http://www.motvet.ru/images/sheme.jpg
 

kruglov

Новичок
Магазин - сервер, система - клиент, клиент пинает сервера, тот шлет ответ.
Потом магазин - клиент, система - сервер.
 

Dl

Новичок
Да нет, всё хорошо отсылается и принимается...
Только (если по схеме) post-подтверждение приходит в систему раньше, чем ответ-уведомление, то есть echo отправляет данные после отработки скрипта.

-~{}~ 15.11.07 11:32:

Пробовал комбинации ob_flush() и flush(), получил письмо, теперь вроде все сообщения посылаются в нужном порядке.
Проблема решена, спасибо всем за помощь!
 
Сверху