如何从PHP服务器读取HTTP get请求


how to read an http get request from a php server

我有一个客户端在php谁使http get请求到服务器。这就是代码:

客户

<?php
function xml_post($xml_request)
{
    $url="http://localhost/malakies/server.php?xml=" . urlencode($xml_request);
    $ch=curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    $result=curl_exec($ch);
    if (curl_errno($ch)){
    $ERR .= "cURL ERROR: ".curl_errno($ch).": ".curl_error($ch)."'n";
    }
    return $result;
}
$result=xml_post("Send sth");
echo $result; ?>

和服务器代码:

<?php
$postdata = $_GET['xml'];
echo $postdata; ?>

一切都很完美。但我有一个问题,它可能是一个新秀:)我想在服务器端有一个监听器,当一个http get请求来了,并做某事与此请求。我不知道如果HTTP请求是技术,给我一个这样的选项。我想要那样的东西:

while(http request hasn't come yet) 
   just wait;
do sth with the http request.

提前感谢。

PHP脚本为每个单独的请求自动运行。所以实际上PHP/Apache已经在做你要求的了。

如果你来自不同的编程语言(如Java),你通常有一个等待新连接的事件循环,也许这有点令人困惑。

另一方面,也许你脑子里有一个特定的情况。如果是这样的话,请进一步说明您的要求……

因为url以server.php结尾,所以需要在服务器上放置一个名为"server.php"的文件。如果curl脚本返回404错误,说明文件没有放在正确的位置。需要将文件放置在哪里取决于操作系统。在Linux上,可以是/var/www/。因此,您需要找出"文档根"是什么。在那里你会创建一个子目录。在Linux示例中,这将是/var/www/malakies/server.php。当请求进入时,PHP将执行文件中的脚本。您传递的数据将放在一个名为$_GET的关联数组中。我建议为server.php设置以下内容:

<?php
echo "Have a first line so you see something even when no data is passed'n";
var_dump($_GET['xml']);
?>
然后,curl函数中的

xml_post将返回(忽略颜色)

Have a first line so you see something even when no data is passed
Send sth

如果它不工作,你得到的错误代码是什么?

我假设您已经安装了apache,并且您想用PHP捕获请求。