2012-11-27 7 views
5

私は、それは非常に大きな配列SOAPクライアントを支援するとともに、他のウェブサイトからのアレイのget、あなたはここで
An arraySOAPリクエスト大規模なデータを処理するために時間がかかりすぎて

ショートバージョンそれをチェックアウトすることができます私が取得する必要がありますカテゴリ名、私のコードはここにある、それは動作しますが、ウェブサイトが遅くなります。誰かがより良いコードを提供できるかどうか。

$client = new nusoap_client('http://87.253.63.146/b2b/b2bWS?WSDL', 'wsdl'); 
$client->soap_defencoding = 'UTF-8'; 
$client->decode_utf8 = false; 
$parametrebi = array('user' => '','brand' => '', 'vat_zone' => 'GEVAT', 'currency' => 'GEL', 'all_items' => 'Y', 'page_num' => '1', 'lines_per_page' => '25'); 

$result = $client->call('GetPriceList', $parametrebi, array('return' => 'xsd:string'), ""); 
foreach($result['PriceList']['categories']['category'] as $category) 
{ 
    echo '<option value="'.$category['!id'].'">'.$category['!name'].'</option>'; 
} 

答えて

0

カテゴリは頻繁に変更されますか?
カテゴリごとに頻繁に投票しますか?

5分ごとにこのソープコールを行い、カテゴリーをDBのテーブルに保存します(このような良い考えではありません)。またはmemcache。ここ

http://memcached.org/

あなたはmemcacheのを使用することができる場合は...ラフ例です。

$memcache_obj = new Memcache(); 
$memcache_obj->connect('memcache_host', 11211); 

if(!$categories = $memcache_obj->get('soap_categories')) { 
$client = new nusoap_client('http://87.253.63.146/b2b/b2bWS?WSDL', 'wsdl'); 
$client->soap_defencoding = 'UTF-8'; 
$client->decode_utf8 = false; 
$parametrebi = array('user' => '','brand' => '', 'vat_zone' => 'GEVAT', 'currency' => 'GEL', 'all_items' => 'Y', 'page_num' => '1', 'lines_per_page' => '25'); 
$result = $client->call('GetPriceList', $parametrebi, array('return' => 'xsd:string'), ""); 
$categories = $result['PriceList']['categories']['category']; 
$memcache_obj->set('soap_categories', $categories) 
} 


foreach($categories as $category) 
{ 
    echo '<option value="'.$category['!id'].'">'.$category['!name'].'</option>'; 
} 

あなたは1,2,5にmemcacheのに有効期限が切れる時間を設定することができます...電気ショック療法minuitesそうキャッシュの有効期限が切れるたびにカテゴリが更新されます。それ以外の場合、キャッシュが期限切れになると、ルックアップ時間は5〜10ms未満になります。

+0

ありがとうございました...私はセッションでデータを保存することに決めました。それはいい考えですか?セッションにデータを格納するのに制限はありますか? – GioGio

関連する問題