2012-11-27 4 views
5

ottengo un array da altro sito web di aiutare client SOAP, è abbastanza grande array, è possibile controllarlo fuori versione corta qui
An arrayrichiesta SOAP richiede troppo tempo per elaborare grandi quantità di dati

ho bisogno di ottenere i nomi delle categorie, il mio codice è qui, funziona ma rallenta il sito web. se qualcuno può fornire un codice migliore.

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

risposta

0

Le categorie cambiano spesso?
Non riesci a sondare le categorie ogni tanto?

Ad esempio, ogni 5 minuti circa fa questa chiamata di sapone e salva le categorie in una tabella nel DB (non è una buona idea) o memcache.

http://memcached.org/

Se è possibile utilizzare memcache ... ecco un esempio Ruff:

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

È possibile impostare il tempo scadrà il memcache per 1,2,5 ... ect minuites così le categorie verranno aggiornate ogni volta che la cache scade. Altrimenti, quando la cache scade, il tempo di ricerca sarà inferiore a 5-10 ms.

+0

grazie mille ... Ho deciso di archiviare i dati in sessione, è una buona idea? C'è un limite di memorizzazione dei dati in sessione? – GioGio