Je suis en train de développer une API RESTful basée sur le Web pour un client. Tout fonctionne très bien en dehors d'une requête, dans laquelle je dois demander l'API Foursquare pour chaque ligne.Optimisation des performances: nombreuses requêtes CURL
L'URL de cette demande est: http://api.example.com/v1/users/times.
Actuellement, la réponse d'une demande à cette URL est:
{
"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"
}
Cependant, le venue_fq_id
étant retourné dans le tableau response.user.times
est par rapport à un lieu sur l'API Foursquare. J'ai essayé d'exécuter une requête curl à l'API Foursquare pour chaque ligne, mais la performance est incroyablement lente. S'il vous plaît pouvez-vous donner quelques exemples de façons dont je pourrais accélérer la performance tout en récupérant la même information que j'aurais eu accès à l'API F/Q à chaque fois?
Voici mon code:
$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'];
}
Ceci doit être fait sans avoir à se connecter. –