0

1つのforeachループで数回呼び出す必要のあるAPIがあり、それを行う方法は、API URLを定義し、ループ内の情報を解析することです。したがって、ループが終了するまで何度も呼び出されますが、不思議に思っています。このようなものを処理する別の方法がある場合。たとえば、約50の状態の状態から情報を取得するAPIがあり、それをforeachループに入れると、50回すべてループするため、結果の読み込みが非常に遅くなりますが、これは正しく行われていますか?そうでない場合、どのようにこのようなものを処理する必要がありますか?

これは私がこれをどのように使おうとしているのかの例です。

//Theses are the states
  $z_state_abrev = zillow_state_abrev();  

//this is the foreach loop. 
  foreach($z_state_abrev as $states){
    $zillow_id = 'X1-ZWz1bp6dndxfd7_75222';
    $xml = file_get_contents('http://www.zillow.com/webservice/GetRateSummary.htm?zws-id='.$zillow_id.'&state='.$states.'');
    $zinfo_rates = simplexml_load_string($xml);
    foreach($zinfo_rates->response as $rates){
        dpr($rates->today->rate[0]);
        $zinfo_rates .= $rates->today->rate[0];
    }

  }
4

2 に答える 2

0

API が 1 回のリクエストで複数のデータを取得する方法を提供しない場合は、うまくいきません。

ただし、呼び出しを高速化するには、curl_multi(またはそれを実装する要求ライブラリ) を調べて、呼び出しをシリアルではなく並列で行います。

于 2013-02-27T19:22:07.210 に答える
0

これは、memcache が私が考えることができる最善の策であるケースです

http://php.net/manual/en/book.memcache.php

file_get_contents の結果は memcache に保存され、その後の呼び出しはキャッシュから取得されます。初めて実行するときは遅くなりますが、その後呼び出されるたびにはるかに高速になります。

少し複雑になりますが、Web 開発の 2 番目のルールであるキャッシュとキャッシュをよく覚えておいてください。

于 2013-02-27T19:21:20.250 に答える