2012-11-27 11 views
5

ich ein Array von anderer Website erhalten zu verarbeiten mit Hilfe SOAP-Client, dann ist es ziemlich groß Array, können Sie sie überprüfen kurze Version hier
An arraySOAP-Anforderung zu lange dauert große Daten

Ich brauche zu bekommen Kategorienamen, mein Code ist hier, es funktioniert, verlangsamt aber die Website. wenn jemand besseren Code zur Verfügung stellen kann.

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

Antwort

0

Ändern sich die Kategorien oft?
Können Sie nicht regelmäßig nach den Kategorien fragen?

ZB alle 5 min oder so machen Sie diesen Soap-Aufruf und speichern Sie entweder die Kategorien in eine Tabelle in der DB (keine so gute Idee) oder Memcache.

http://memcached.org/

Wenn Sie memcache verwenden können ... hier ist ein ruff Beispiel:

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

Sie können die Ablaufzeit auf memcache auf 1,2,5 gesetzt ... ect minuites so Die Kategorien werden jedes Mal aktualisiert, wenn der Cache abläuft. Anderenfalls, wenn der Cache abläuft, beträgt die Suchzeit weniger als 5 bis 10 ms.

+0

vielen Dank ... Ich habe beschlossen, Daten in Sitzung zu speichern, ist es eine gute Idee? Gibt es ein Limit beim Speichern von Daten in der Sitzung? – GioGio