使用REST Web服务处理大量数据

时间:2015-10-15 02:15:38

标签: php arrays

我正在尝试创建一个Web服务,它接受许多数组(double类型)并返回每个数组的平均值。

为了开始,我编写了一个PHP脚本,它使用HTTP GET方法检索数组并计算其均值,并以JSON格式将其返回到响应中:

<?php
header("Content-Type:application/json");
if(!empty($_GET['array'])) {
    //calculate mean of each array and send results
    $array = $_GET['array'];
    $mean = array_sum($array)/count($array);
    respond(200,"OK",$mean);
} else {
    //invalid request
    respond(400,"Invalid Request",NULL);
}

function respond($status,$message,$data) {
    header("HTTP/1.1 $status $message");
    $response['status']=$status;
    $response['message']=$message;
    $response['data']=$data;
    $json_response=json_encode($response);
    echo $json_response;
}
?>

但是,我很快意识到,对于一个大型数组(例如,15000个值),我用于传递值的查询字符串将变得如此之大以至于不切实际,如果它甚至可行(我已经读过许多系统放置了一个URL长度限制~2000个字符)。所以,我正在寻找一种不同的方式将数据传递给我的服务,这种方式不会受到限制。阵列将由客户端程序生成。我正在为服务器使用最新的XAMPP堆栈。

3 个答案:

答案 0 :(得分:1)

对于你所谈论的数据,你是对的,GET不是发送它的合适方式。使用POST。

答案 1 :(得分:1)

您可以使用POST代替GET。这样做的方式取决于客户的语言。例如,使用jQuery:

$.post('http://yourserver.com', yourArray, function (data, status) {
    //handle the response of the server
});

答案 2 :(得分:0)

我假设您可以控制客户端程序,在这种情况下,将客户端更改为使用HTTP Request,并将请求内容添加到正文中。

如果您无法控制客户端程序,那么您就不走运了。如果客户端在$ _GET中发送请求,则必须以这种方式接收请求。