MySQLクエリの結果の配列をループするforループがあります。
クエリwait_times
は、ログインしたユーザーが作成したテーブルからすべての行を選択します。これは次のとおりです。
SELECT * FROM `wait_times` WHERE `user_id` = ?
私の問題は、各行の会場情報を取得する必要があることです。現在、私はその配列をループして、会場の情報を求める個別のリクエストをfoursquareに送信しています。このメソッドは、クエリから返された行の量によっては非常に遅くなる可能性があります。
これを高速化するために、会場情報を別のテーブルに保存することを計画しています。これは、最終的には、FoursquareAPIにcurlリクエストを送信するよりも高速です。
このプロセスをスピードアップできる他の方法があれば教えてください。
マルチクエリを調べましたが、ユーザーがFoursquareのアカウントを持っていない可能性があり、APIではユーザーがサインアップしてログインする必要があります。
これが私のコードです:
$query = $this->db->query("SELECT * FROM `wait_times` WHERE `user_id` = ?", array($uid));
$wait_times = $query->result();
foreach ($wait_times as $wait_time) {
$wait_time->venue = $this->venue_info($wait_time->venue_fq_id);
}
function venue_info($vid) {
$v = date('Ymd');
$url = "https://api.foursquare.com/v2/venues/{$vid}?client_id=" . FQ_CLIENT_ID . "&client_secret=" . FQ_CLIENT_SECRET . "&v={$v}";
curl_setopt($this->ch, CURLOPT_URL, $url);
$resp = curl_exec($this->ch) or die(curl_error($this->ch));
$json = json_decode($resp, TRUE);
if ($json['meta']['code'] == 400)
return FALSE;
$venue = $json['response']['venue'];
return $venue;
}