如何从php服务器读取http get请求

时间:2011-07-08 13:59:49

标签: php curl httprequest http-get

我在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.

提前谢谢。

2 个答案:

答案 0 :(得分:1)

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

如果您来自不同的编程语言(如Java),通常会有一个等待新连接的事件循环,这可能会让您感到有些困惑。

另一方面,也许你脑子里有一个特定的情况。如果是这种情况,请进一步解释您的要求......

答案 1 :(得分:0)

因为您的网址在server.php中“结束”,您需要在服务器上放置一个名为“server.php”的文件。如果您的curl脚本返回404错误,则表示您没有位于正确位置的文件。您需要放置文件的位置取决于操作系统。在Linux上,这可能是/ var / www /。所以你需要找出你的“文档根”是什么。那里你会创建一个子目录malakies。在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']);
?>
你卷曲函数中的 xml_post将返回(忽略颜色)

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

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

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