【发布时间】:2014-09-14 09:41:46
【问题描述】:
我的 API 目前通过 cURL 请求发送分析跟踪,但是,这确实减慢了 API 可以处理的请求数量,所以我尝试通过套接字发送它并忽略输出,但是分析似乎没有正在跟踪它。
我在下面附上了两组代码,当使用 curl 时,我可以看到它立即显示在实时分析中,当使用套接字时,实时分析似乎并没有真正改变。
我不确定套接字 1 的代码是否有错误,或者谷歌分析是否出于某种原因不喜欢它,有什么想法吗?
套接字代码:
private function track() {
if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
}
$url = 'www.google-analytics.com';
$page = '/collect';
$fields = array(
'v' => '1',
'tid' => $this->GA_ID,
'cid' => $this->gaParseCookie(),
't' => 'pageview',
'dh' => 'webservice.fanart.tv',
'dp' => $this->ttype.' - '.$_GET["api_key"].' - '.$this->project,
'dt' => $this->tid,
'uip' => $_SERVER['REMOTE_ADDR']
);
$fields_string = http_build_query($fields);
$fp = fsockopen($url, 80, $errno, $errstr, 5);
$output = "POST $page HTTP/1.1\r\n";
$output .= "Host: $url\r\n";
$output .= "Content-Type: application/x-www-form-urlencoded\r\n";
$output .= "Content-Length: ".strlen($fields_string)."\r\n";
$output .= "Connection: close\r\n";
$output .= $fields_string;
fwrite($fp, $output);
fclose($fp);
}
卷曲代码:
private function track() {
if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
}
$url = 'http://www.google-analytics.com/collect';
$fields = array(
'v' => '1',
'tid' => $this->GA_ID,
'cid' => $this->gaParseCookie(),
't' => 'pageview',
'dh' => 'webservice.fanart.tv',
'dp' => $this->ttype.' - '.$_GET["api_key"].' - '.$this->project,
'dt' => $this->tid,
'uip' => $_SERVER['REMOTE_ADDR']
);
$fields_string = http_build_query($fields);
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
}
【问题讨论】:
标签: php sockets curl google-analytics