我有两个网站在php和python。当用户向服务器发送请求时,我需要php/python向远程服务器发送HTTP POST请求。我希望立即回复用户,而不等待远程服务器的响应。
是否可以在向用户发送响应后继续运行php/python脚本。在这种情况下,我将首先回复用户,然后才将HTTP POST请求发送到远程服务器。
有没有可能在php/python中创建一个不处理响应的非阻塞HTTP客户端?
一个在php和python中具有相同逻辑的解决方案对我来说是更好的。
谢谢
发布于 2009-10-12 16:55:04
在PHP中,你可以通过发送这个请求来关闭连接(这是HTTP相关的,在python中也可以使用,尽管我不知道应该使用什么语法):
// Send the response to the client
header('Connection: Close');
// Do the background job: just don't output anything!附录:我忘了提到你可能需要设置"Context-Length“。此外,请查看this comment获取技巧和真实的测试用例。
示例:
<?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';
?>发布于 2009-10-12 16:41:15
您可以派生另一个进程来处理到另一个服务器的POST。在PHP中,您可以生成进程并“断开连接”,这样就不需要等待响应。
exec("nohup /path/to/script/post_content.php > /dev/null 2>&1 &");然后,您可以卷曲来执行帖子。如果想要将参数传递给PHP脚本,可以使用getopt()函数来读取它们。我不确定您是否会在Python中做类似的事情。
发布于 2009-10-13 00:35:51
您需要做的是让PHP脚本执行另一个执行服务器调用的脚本,然后向用户发送请求。
https://stackoverflow.com/questions/1555517
复制相似问题