Запустить и забыть веб-сервис / действие SOAP

В моем сервисе nusoap зарегистрировано следующее действие:

$server->register(
'testfunction',
array('value' => 'xsd:string'),
array( ),
'urn:test_services',
'urn:test_services#testfunction'
);

…и сама функция:

function testfunction($value)
{
// do something with $value
}

Я хочу, чтобы действие было «выстрелить и забыть», то есть, какие бы вызовы оно ни вызывало, не нужно торчать для ответа. Я только что передал пустой массив для аргумента ответа $ server-> register. Я думал, что это может достичь того, что я искал, но это не так (клиент зависает для ответа).

WSDL выглядит так:

<message name="testfunctionRequest">
<part name="value" type="xsd:string"/>
</message>
<message name="testfunctionResponse"/>

Есть ли способ добиться такой функциональности с помощью nusoap? Я не уверен, является ли «огонь и забыл» правильной терминологией, поэтому у меня возникли некоторые проблемы с поиском возможных ответов на этот вопрос!

0

Решение

Вам необходимо отсоединить текущее выполнение от процесса веб-сервера и закрыть соединение: используя pcntl_fork () или запуск сценария PHP в фоновом режиме — Асинхронная оболочка в PHP

Другой вариант — добавить информацию о запросе в некоторую очередь. Эта очередь может быть таблицей MySQL (или другой СУБД) или чем-то вроде хранилища MemcacheQ, RabbitMQ и т. д. Затем извлекайте информацию из очереди другим независимым сценарием и обрабатывайте ее.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector