我在PHP和Python中的两个网站。 当用户发送到我需要的PHP /蟒发送HTTP POST请求到远程服务器的服务器的请求。 我要回复用户不等待来自远程服务器的响应。
是否有可能继续向用户发送一个响应后运行一个PHP / Python脚本。 在这种情况下,我会先回复用户,然后才发送HTTP POST请求到远程服务器。
是否有可能创建PHP / Python的非阻塞HTTP客户端不处理的响应呢?
这将具有在PHP和python相同的逻辑的溶液优选为我。
谢谢
我在PHP和Python中的两个网站。 当用户发送到我需要的PHP /蟒发送HTTP POST请求到远程服务器的服务器的请求。 我要回复用户不等待来自远程服务器的响应。
是否有可能继续向用户发送一个响应后运行一个PHP / Python脚本。 在这种情况下,我会先回复用户,然后才发送HTTP POST请求到远程服务器。
是否有可能创建PHP / Python的非阻塞HTTP客户端不处理的响应呢?
这将具有在PHP和python相同的逻辑的溶液优选为我。
谢谢
在PHP中,你可以关闭发送该请求的连接(这是HTTP和相关工作也在蟒蛇,虽然我不知道正确的语法使用):
// Send the response to the client
header('Connection: Close');
// Do the background job: just don't output anything!
附录:我忘了提及你可能要设置“上下文长度”。 此外,检查出此评论的提示和一个真正的测试案例。
<?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';
?>
您可以产生另一个进程来处理POST到其他服务器。 在PHP中,你会催生过程,“断开”,这样你就不会等待响应。
exec("nohup /path/to/script/post_content.php > /dev/null 2>&1 &");
然后,您可以为您卷曲执行职务。 如果你想传递参数给PHP脚本,你可以使用getopt()函数读取它们。 不知道你是否会做在Python类似的东西。
什么,你需要做的是PHP脚本执行另一个脚本,并在服务器呼叫,然后向用户发送请求。
你必须使用的fsockopen。 而且不听的结果
<?php
$fp = fsockopen('example.com', 80);
$vars = array(
'hello' => 'world'
);
$content = http_build_query($vars);
fwrite($fp, "POST /reposter.php HTTP/1.1\r\n");
fwrite($fp, "Host: example.com\r\n");
fwrite($fp, "Content-Type: application/x-www-form-urlencoded\r\n");
fwrite($fp, "Content-Length: ".strlen($content)."\r\n");
fwrite($fp, "Connection: close\r\n");
fwrite($fp, "\r\n");
fwrite($fp, $content);
你必须设置一个中间人。 因此,在你自己的服务器你会:
水烟旨在解决您的问题。