Accelerare il sapone magento v1


10

Ho più domande per gli sviluppatori magento esperti:

  1. È possibile migliorare la velocità di magento v1 soap api? Quando si richiedono dati, magento richiede rapidamente 1,5 secondi per compilare informazioni semplici come l'indirizzo del cliente, ecc.

    Richiedere più possibili nodi di dati rilevanti può rapidamente costare circa 5-7 secondi.

    Ora sto già facendo quelle richieste tramite richieste AJAX in modo che l'interfaccia della pagina si carichi rapidamente, ma un miglioramento della velocità sarebbe bello.

  2. O sarebbe meglio scrivere la mia domanda per darmi le informazioni pertinenti direttamente dal db magento? Non è così complicato un db e se faccio una query diretta si carica in un centesimo di secondo con i risultati ...

    L'unica considerazione che ho con quell'opzione è:

    1. Cosa succede se magento aggiorna e modifica lo schema del database?
    2. O la configurazione del database di magento è relativamente sicura e compatibile con gli aggiornamenti?

Qualcuno ha qualche esperienza con questo e le loro storie di successo o faillure? Devo fare una descrizione informata per poter sapere come procedere.


1
È probabilmente legato a PHP, non MySQL, Nginx o altro . Lo stesso del resto del tuo negozio. Rendi il tuo negozio veloce e l'API seguirà. Tuttavia, non sarà mai alleggerito: i metodi di flusso di dati / API sono lenti a prescindere, quindi le implementazioni personalizzate supereranno sempre le prestazioni a costo di gestibilità / tempi di implementazione / aggiornabilità.
Ben Lessani - Sonassi

3
nah, non è legato a php ... è l'intero setup di magento che rallenta le cose incredibilmente. Richiede più tempo per il completamento di una richiesta API a sapone che per richiedere una grande pagina di visualizzazione negozio con più articoli e carrello. Qualcosa è storto nel design magento.
Tschallacka,

Risposte:


8

Ho riscontrato esattamente questo problema ampiamente e ho risolto il problema semplicemente lavorando direttamente con gli oggetti Magento. Penso che ci sia la preoccupazione delle modifiche al codice e quant'altro che descrivi, ma gran parte del mio codice è negli script monouso per caricare vecchi dati, cose del genere, quindi era una preoccupazione minore. Lavorare direttamente con gli oggetti Magento ha anche avuto il vantaggio secondario di farmi imparare gli interni un po 'più di quanto farei con l'API SOAP: una curva di apprendimento più ripida di sicuro, ma mi sento un po' più informato su ciò che sta succedendo lì dentro che se mi fossi bloccato solo usando l'API SOAP.

Un'altra opzione che abbiamo provato è stata la memorizzazione nella cache dei dati utilizzando Memcached (o qualcosa come Redis funzionerebbe anche), anche se ora devi preoccuparti di quanto spesso aggiornare la cache, da dove e cose del genere. Ma raggiunge l'obiettivo di recuperare i dati molto, molto più velocemente. Penso che questa sia una buona opzione dipenderà esattamente da cosa stai cercando di fare.


Bene, se dovessi fare qualcosa dal magento stesso non otterrei molti vantaggi in termini di velocità poiché il magento deve ancora essere "avviato" per gestire la richiesta. Mi piace l'api soap perché "non cambia" ma odio il fatto che sia così incredibilmente lento rispondere alle domande più semplici. anche il sito principale che deve gestire molte più richieste è molto più veloce.
Tschallacka,

Quello che sto cercando di fare è collegare Magento al nostro software ERP, quindi ho bisogno di accedere ai dati più recenti in qualsiasi momento.
Tschallacka,

1
Forse - nel mio caso, stavo scrivendo cose che avrebbero caricato un ordine per ID di incremento, quindi eseguivo alcune azioni in base ai suoi dati. Il caricamento di un ordine completo è stato di circa 1,5 secondi nell'API SOAP o una piccola frazione di secondo in forma di "oggetto non elaborato". La scelta per me era chiara quando ne avrei caricati centinaia in una sola corsa. Un'altra limitazione, inoltre, è che eseguendo lo stile "app magento" è che deve trovarsi sullo stesso server. Nel mio caso, non mi dispiaceva affatto, ma vale la pena ricordare.
Mike

1
Come hai caricato tutto in forma di oggetto grezzo?
Tschallacka,

$order = Mage::getModel('sales/order')->load($order_id);, basicamente. Ci sono uno o due frammenti in questo thread del forum che potrebbero illustrare di più: magentocommerce.com/boards/viewthread/18629
Mike

6

Accelerare l'API SOAP sarà difficile. Puoi sempre aggiungere un po 'di hardware aggiuntivo (server MySQL più veloce) o eseguire lo store su NginX, cosa che farà in pochi millisecondi, NginX è meglio nel gestire grandi quantità di richieste http. La memorizzazione nella cache non sarebbe di grande aiuto in quanto la risposta della maggior parte delle chiamate differirà ogni volta.

Costruire la tua API da zero utilizzando i modelli Magento Core potrebbe essere la soluzione più veloce perché puoi modificare il codice per migliorare le prestazioni caricando solo esattamente ciò di cui hai bisogno. Dalla mia esperienza con le classi core non è cambiato molto tra la versione 1.5 e la 1.7

Modifica: ho dimenticato, una piccola vittoria potrebbe derivare dall'attivazione della compressione dell'output di gzip nel file htaccess o php.ini o se ti senti in grado di spostare l'API SOAP su un altro server utilizzando lo stesso database se il database MySQL non lo è il collo di bottiglia


1
il database mysql non è il collo di bottiglia, il collo di bottiglia è magento che avvia tutti i suoi file di configurazione, carica ogni pezzo di merda, compila un sapone api e infine ricorda che ho fatto una richiesta, recupera quei dati, valutalo, compila nel formato richiesto, convalidare il formato e quindi emetterlo tramite la connessione soap .... Controllare controllare Controllare doppio controllo è bello ... ma è troppo lento. Andrà bene all'inizio, ma dovrà accelerare a un certo momento.
Tschallacka,

La cache nativa di Magento dovrebbe aiutarti a combinare i file di configurazione e puoi usare il compilatore per velocizzare il codice. Anche un acceleratore PHP ( en.wikipedia.org/wiki/PHP_accelerator ) aumenterebbe le tue prestazioni qui. Ma nel tuo caso potrebbe valere la pena guardare alla creazione della tua API che utilizza l'API core di Magento.
Sander Mangel
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.