2009-09-25 3 views
2

У меня есть PHP-скрипт, который отправляет запрос на веб-службу через мыло. Я ожидаю получить ответ за несколько секунд, но если я не получу ответа в течение 30 секунд, мне нужно отправить другой запрос, аннулирующий мой первый запрос.Таймер обслуживания веб-службы

Любые предложения по наилучшему способу обработки этой функции таймера? Должен ли я смотреть на набор PHP _time _limit setting? Ищите любые идеи или общие идеи.

Спасибо.

+0

Попытка упростить это как можно больше. Могу ли я просто поставить первый вызов на страницу с обновлением заголовка до 30 секунд? Если раньше мой скрипт получал ответ, я задал свой сценарий для перенаправления на следующую страницу, которую я хочу. Если после 30 секунд ответа нет, перенаправление заголовка может перейти на страницу с запросом void? – Kevin

+0

Вы говорите о вещах, которые происходят в клиенте (заголовках), а не на сервере. –

+0

Посмотрите, это классическое программирование, управляемое событиями. Вам нужен слушатель, и вам нужен вызывающий. Оба одновременно работают/пробуждаются. –

ответ

0

Если у нас только многопоточность ....
Мой подход (хотя вы можете делать асинхронные вызовы с CURL) должен был бы написать скрипт, который управляет этим процессом. Этот скрипт будет делать:

  1. Использование оболочки/cron/async javascript (со стороны клиента)/асинхронный вызов с использованием CURL для активации вызывающего скрипта.
  2. Проверяйте каждые несколько секунд, если вызывающий скрипт вернул ответ (ответ сохраняется в памяти/диске вызывающим скриптом, который также служит в качестве флага-> I завершен)
  3. Прошло 30 секунд - убить текущий экземпляр вызывающий скрипт, создайте экземпляр другого сценария вызова.

Это очень грубое описание, и более тонкие детали должны быть определены лучше.

+0

Очень результативно голосовать без объяснения ... –

+0

Восстановил -1 до нуля. Законный ответ. Я бы сделал это через Крон. –

1

Нашел в Интернете, и кажется шагом в правильном направлении ...

особенность -> установив тайм-аут соединения

$ клиент = новый SoapClient ($ WSDL, массив ("connection_timeout "=> 5)); Параметр connection_timeout определяет тайм-аут в секундах для подключения к службе SOAP. Этот параметр не определяет тайм-аут для служб с медленными ответами. Чтобы ограничить время ожидания вызовов, чтобы завершить настройку default_socket_timeout, доступно.

+0

Это работало? Если это так - разместите полный код для справок в будущем –

Смежные вопросы