HttpSendRequest不等待PHP脚本完成

时间:2010-12-08 14:48:46

标签: php c++ wininet

我从我的C ++应用程序发送HTTP POST request到服务器上的PHP脚本。使用HttpOpenRequest/HttpSendRequest/etc。目前,它等待PHP脚本在HttpSendRequest返回之前完成执行。反正有没有改变这个功能?

我在我的C ++应用程序关闭之前发送数据,所以我不希望它在那里等待10秒以上等待PHP脚本完成执行。我只是希望它发送数据,然后关闭应用程序。

我想到的一件事是让PHP脚本使用exec命令在另一个进程中生成另一个PHP脚本,因此第一个脚本将立即返回。但是,我正在使用HTTP POST请求发送大量数据,因此需要将此数据传递给生成的进程。

理想情况下,我只想设置一个标志来告诉HttpSendRequest不要等待。我在文档中看不到任何明显的东西,但可能错过了一些东西。

2 个答案:

答案 0 :(得分:3)

您可以使用InternetOpen致电INTERNET_FLAG_ASYNC,并让您的回调不会产生任何后果。

以下是一些示例代码,可帮助您入门:

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

然后(如rik建议的那样),在PHP脚本的顶部调用ignore_user_abort(true);以确保它完全执行。

ignore_user_abort

答案 1 :(得分:2)

您可能希望在PHP脚本中使用ignore_user_abort()。然后,您可以在发送数据后关闭C客户端的连接,PHP将继续执行它应该执行的任何操作。