我一直在使用PHP和curl
将敏感数据发布到我的后端服务器。但是,在第2次或第3次发布请求之后,帖子数据似乎没有清除,相反,它似乎将旧的帖子数据连接到正在发送的新数据。
以下是我创建请求的示例:
function Communicate($req, $postdata)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, sprintf('%s%s', $this->server_uri, $req));
curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, substr_count($postdata, '='));
curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
$res = curl_exec($curl);
curl_close($curl);
unset($postdata);
$sfr = json_decode($res);
}
如您所见,这是相当简单的。
但是,我正在跟踪后端服务器上的post请求,这是我得到的:
第一次请求
Restful Function:ValidateUserByEmail Params:email=sam.bengtson@gmail.com& pass = foo
第二次请求
Restful Function:GetRegionByUserId Params:userid = 11.bengtson@gmail.com& pass = foo
第二个请求的userid param应该只是1.我可以看到在执行curl_exec函数之前正确设置了它。
答案 0 :(得分:1)
您的功能似乎很简单,但假设接收端发生了某些事情,为什么不使用sleep
来延迟每个循环的连接,以便让您的接收点有时间赶上?
例如,代码的这一部分是:
$res = curl_exec($curl);
curl_close($curl);
unset($postdata);
$sfr = json_decode($res);
}
但sleep
将是:
$res = curl_exec($curl);
curl_close($curl);
unset($postdata);
$sfr = json_decode($res);
sleep(3);
}
我现在拥有它的方式它会睡3秒,但我建议缩短甚至加长它以查看速度,性能和速度的最佳平衡。您的设置准确性。
答案 1 :(得分:1)
如果是我,我会仔细检查调用Communicate()
的代码。在我看来,如果存在错误,那么在将arg传递给函数之前,它与$postdata
参数的处理有关。使用var_dump($postdata)
进行编码的垃圾,我打赌你会发现其中一个很明显的错误,无法找到。
(接收这些请求的服务器上的代码也是如此。)