我可以使用一个File()调用或类似的方法向点击API发出两个请求吗?


Can I make two requests to the clicky API using just one File() call or similar?

我正在对点击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);
}
?>