5

私はSOAPクライアントを支援する他のウェブサイトから配列を取得します。それはかなり大きな配列です。ここで短いバージョンをチェックできます
。配列

カテゴリ名を取得する必要があります。コードはここにあります。機能しますが、Webサイトの速度が低下します。誰かがより良いコードを提供できれば。

$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>';
}
4

1 に答える 1

0

カテゴリは頻繁に変更されますか?
頻繁にカテゴリをポーリングすることはできませんか?

たとえば、5分ごとにこのsoap呼び出しを行い、カテゴリを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>';
}

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

于 2012-11-27T14:48:05.030 に答える