我正在对点击API进行如下调用:
$href = urlencode( $_SERVER['SCRIPT_NAME'] );
$title = urlencode( $_SERVER['SCRIPT_NAME'] );
$ref = urlencode( $_SERVER['HTTP_REFERER'] );
$ua = urlencode( $_SERVER['HTTP_USER_AGENT'] );
file("necessary clicky API call to clicky id );
但是我们需要从一个页面呼叫两个不同的点击帐户:
$href = urlencode( $_SERVER['SCRIPT_NAME'] );
$title = urlencode( $_SERVER['SCRIPT_NAME'] );
$ref = urlencode( $_SERVER['HTTP_REFERER'] );
$ua = urlencode( $_SERVER['HTTP_USER_AGENT'] );
file("necessary clicky API call to clicky id X );
file("necessary clicky API call to clicky id Y );
在PHP中是否有这样做而不使用file()函数两次?如果这是一种选择,似乎在一个连接中登录两者是最佳的,但我不确定是否可能?
两个连接的延迟时间也许不是一个问题?我想这是一个加载的问题,因为我们希望这个页面尽可能快地运行。
不熟悉这个API,但如果API url不同,那么是的,你需要发出2个请求,如果速度对你很重要,那么你可以使用curl_multi,它会同时发出两个请求。这样可以加快返回速度,但是如果需要的话,您仍然需要像file()那样将每行都爆炸()到一个数组中。所以它可能没有太大的区别,但这里有一个例子:
<?php
function curl_multi($urls = array()) {
$curl = array();
$result = array();
$mh = curl_multi_init();
foreach ($urls as $id=>$url) {
$curl[$id] = curl_init();
curl_setopt($curl[$id], CURLOPT_URL, $url);
curl_setopt($curl[$id], CURLOPT_HEADER, 0);
curl_setopt($curl[$id], CURLOPT_TIMEOUT, 30);
curl_setopt($curl[$id], CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; curl)');
curl_setopt($curl[$id], CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $curl[$id]);
}
$running = null;
do {
curl_multi_exec($mh, $running);
} while($running > 0);
foreach($curl as $id=>$c) {
$result[$id] = curl_multi_getcontent($c);
curl_multi_remove_handle($mh, $c);
}
curl_multi_close($mh);
return $result;
}
$urls['X'] = 'clicky API URL call to clicky id X';
$urls['Y'] = 'clicky API URL call to clicky id Y';
foreach(curl_multi($urls) as $id=>$result){
$urls[$id] = explode(PHP_EOL, $result);
}
?>