HttpSendRequest не ожидает завершения сценария PHP - PullRequest
1 голос
/ 08 декабря 2010

Я отправляю HTTP POST request из моего приложения C ++ в сценарий PHP на сервере. Использование HttpOpenRequest/HttpSendRequest/etc. В настоящее время он ожидает завершения выполнения сценария PHP, прежде чем вернется HttpSendRequest. Есть ли способ изменить эту функциональность?

Я отправляю данные непосредственно перед закрытием моего приложения на C ++, поэтому я не хочу, чтобы оно просидело более 10 секунд в ожидании завершения выполнения сценария PHP. Я просто хочу отправить данные, а затем закрыть приложение.

Одна вещь, о которой я думал, - это чтобы PHP-скрипт порождал другой PHP-скрипт в другом процессе с помощью команды exec, чтобы первый скрипт сразу возвращался. Тем не менее, я отправляю много данных с моим HTTP-запросом POST, поэтому он должен передать эти данные порожденному процессу.

В идеале я просто хочу установить флаг, чтобы HttpSendRequest не ждать. Я не видел ничего очевидного в документах, но, возможно, что-то пропустил.

Ответы [ 2 ]

3 голосов
/ 08 декабря 2010

Вы можете позвонить InternetOpen с помощью INTERNET_FLAG_ASYNC, и ваш обратный вызов ничего не изменит.

Вот пример кода, с которого можно начать:

http://www.codeproject.com/KB/IP/asyncwininet.aspx

Затем (как предлагает Рик), вызовите ignore_user_abort(true); вверху вашего PHP-скрипта, чтобы убедиться, что он выполняется полностью.

ignore_user_abort

2 голосов
/ 08 декабря 2010

Вы можете захотеть ignore_user_abort() в своем PHP-скрипте. Затем вы можете закрыть соединение со своим клиентом C после отправки данных, и PHP продолжит делать то, что должен.

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