首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发送非阻塞HTTP POST请求

发送非阻塞HTTP POST请求
EN

Stack Overflow用户
提问于 2009-10-12 16:22:38
回答 6查看 12.3K关注 0票数 13

我有两个网站在php和python。当用户向服务器发送请求时,我需要php/python向远程服务器发送HTTP POST请求。我希望立即回复用户,而不等待远程服务器的响应。

是否可以在向用户发送响应后继续运行php/python脚本。在这种情况下,我将首先回复用户,然后才将HTTP POST请求发送到远程服务器。

有没有可能在php/python中创建一个不处理响应的非阻塞HTTP客户端?

一个在php和python中具有相同逻辑的解决方案对我来说是更好的。

谢谢

EN

回答 6

Stack Overflow用户

发布于 2009-10-12 16:55:04

在PHP中,你可以通过发送这个请求来关闭连接(这是HTTP相关的,在python中也可以使用,尽管我不知道应该使用什么语法):

代码语言:javascript
复制
// Send the response to the client
header('Connection: Close');
// Do the background job: just don't output anything!

附录:我忘了提到你可能需要设置"Context-Length“。此外,请查看this comment获取技巧和真实的测试用例。

示例:

代码语言:javascript
复制
<?php    
ob_end_clean();
header('Connection: close');

ob_start();

echo 'Your stuff goes here...';

header('Content-Length: ' . ob_get_length());

ob_end_flush();
flush();

// Now we are in background mode
sleep(10);
echo 'This text should not be visible';    
?>
票数 6
EN

Stack Overflow用户

发布于 2009-10-12 16:41:15

您可以派生另一个进程来处理到另一个服务器的POST。在PHP中,您可以生成进程并“断开连接”,这样就不需要等待响应。

代码语言:javascript
复制
exec("nohup /path/to/script/post_content.php > /dev/null 2>&1 &");

然后,您可以卷曲来执行帖子。如果想要将参数传递给PHP脚本,可以使用getopt()函数来读取它们。我不确定您是否会在Python中做类似的事情。

票数 2
EN

Stack Overflow用户

发布于 2009-10-13 00:35:51

您需要做的是让PHP脚本执行另一个执行服务器调用的脚本,然后向用户发送请求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1555517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档