Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 优化性能:许多CURL请求_Php_Caching_Optimization_Curl - Fatal编程技术网

Php 优化性能:许多CURL请求

Php 优化性能:许多CURL请求,php,caching,optimization,curl,Php,Caching,Optimization,Curl,我正在为客户机开发基于web的RESTful api。除了一个请求之外,其他一切都很好,在这个请求中,我需要为每一行请求Foursquare API 此请求的URL为: 当前,对该url的请求响应为: { "response": { "user": { ... some user info ... "times": [ { "id": "8", "venue_fq_id

我正在为客户机开发基于web的RESTful api。除了一个请求之外,其他一切都很好,在这个请求中,我需要为每一行请求Foursquare API

此请求的URL为:

当前,对该url的请求响应为:

{
"response": {
    "user": {
        ... some user info ...
        "times": [
            {
                "id": "8",
                "venue_fq_id": "4b81eb25f964a52000c430e3",
                "user_id": "1",
                "wait_length": "4468",
                "created_at": "2012-06-09 21:45:43"
            },
            {
                "id": "9",
                "venue_fq_id": "4aad285af964a520c05e20e3",
                "user_id": "1",
                "wait_length": "8512",
                "created_at": "2012-06-09 21:45:43"
            },
            {
                "id": "10",
                "venue_fq_id": "42377700f964a52024201fe3",
                "user_id": "1",
                "wait_length": "29155",
                "created_at": "2012-06-09 21:45:44"
            },
            {
                "id": "11",
                "venue_fq_id": "45c88764f964a5206e421fe3",
                "user_id": "1",
                "wait_length": "33841",
                "created_at": "2012-06-09 21:45:44"
            },
            {
                "id": "12",
                "venue_fq_id": "430d0a00f964a5203e271fe3",
                "user_id": "1",
                "wait_length": "81739",
                "created_at": "2012-06-09 21:45:44"
            }
        ]
    }
},
"stat": "ok"
}
但是,在
response.user.times
数组中返回的
场馆fq\u id
是相对于Foursquare API上的场馆的。我尝试为每一行运行一个对Foursquare API的curl请求,但是性能非常慢。请给出一些例子,说明如何在检索与每次访问F/Q API时相同的信息的同时提高性能

这是我的密码:

$query = $this->db->query("SELECT * FROM `wait_times` WHERE `user_id` = ?", array($email_address));

$wait_times = $query->result();

foreach ($wait_times as $wait_time) {

    $wait_time->venue = $this->venue_info($wait_time->venue_fq_id);

}

function venue_info($fq_id) {

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://api.foursquare.com/v2/venues/4b522afaf964a5200b6d27e3");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    $response = json_decode(curl_exec($ch));
    curl_close($ch);

    return $response['response']['venue'];

}

你正在浪费大量的时间实例化/分解CURL对象。这会阻止您利用HTTP keep alives,迫使curl为您发出的每个请求启动一个新的tcp连接

卷曲手柄可以重复使用。e、 g

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);


function venue_info($fq_id) {
   global $ch;
   curl_setopt($ch, CURLOPT_URL, "https://api.foursquare.com/v2/venues/4b522afaf964a5200b6d27e3");
   $resp = curl_exec($ch) or die(curl_error($ch));
   $json = json_decode($resp);
   return($json);
}

Foursquare API提供了端点,允许您将最多五个查询组合到一个请求中