2013-01-11 6 views
7

Jestem w trakcie używania VB.NET do pracy z interfejsem API Magento. Używałem SOAP v1 pomyślnie, dopóki nie natknąłem się na połączenie, które wymaga tablicy asocjacyjnej. Po całym dniu bez powodzenia postanowiłem spróbować v2, który ma wszystkie potrzebne obiekty. v2 działa, ale jest bardzo, bardzo powolny. Aby zaktualizować jeden inwentarz itemów, zalogowanie się i aktualizacja trwało mniej więcej półtorej minuty, a nie mniej niż 10 sekund w wersji 1. To przypomniało mi, dlaczego wybrałem v1 w pierwszej kolejności.Wydajność Magento SOAP v1 vs. v2

Moje pytanie brzmi, czy istnieje jakakolwiek poprawa wydajności na v2. Nie mogę sobie wyobrazić, że jest tak, jak tego potrzebuję, ale myślałem, że zapytam. Mam już włączone buforowanie. Alternatywą uzyskania v1 w celu zaakceptowania tablicy asocjacyjnej wydaje się być wyzwaniem, jeśli to możliwe.

Odpowiedz

22

Istnieje wiele powodów, dla których żądanie WSDL może zająć dużo czasu, ale pierwszą rzeczą, którą chciałbym sprawdzić, jest ustawienie pamięci podręcznej o wartości WSDL. Po wywołaniu interfejsu API w Magento, Magento używa obiektu PHP SoapServer. Obiekt SoapServer musi pobrać własny plik WSDL do działania, a generowanie i pobieranie tego pliku może być czasochłonne.

idź do

System -> Configuration -> Magento Core API -> General Settings 

i wyglądają "Włącz WSDL cache". Ustaw to na yes, a zobaczysz poprawę wydajności interfejsu API.

To ustawienie może nie istnieć w Twojej wersji Magento - w takim przypadku możesz zainteresować się rozszerzeniem Mercury API (stworzonym i sprzedawanym przeze mnie) z ulepszeniami interfejsu API, które obejmują tę funkcję w starszych wersjach Magento. Jeśli nie masz budżetu na rozszerzenie, Mage_Api_Model_Server_Adapter_Soap jest klasą, w której starsze wersje Magento wyłączają tę pamięć podręczną.

+0

miałeś rację. Zmniejszyło czas do mniej więcej tak samo, jak w wersji 1. Właściwie to przeszukałem to ustawienie w wyszukiwaniach, ale nigdy go nie wypróbowałem :(No cóż, teraz wiem. Jeszcze raz dziękuję – gwgeller

+0

Podoba mi się lekkość v1. Przełączyłem się na v2 z powodu problemu z VB.NET Myślę, że mogę zadać inne pytanie, jeśli chcesz mieć na to oko;) – gwgeller

+0

Jestem ciekawy, czy ta pamięć podręczna jest wyczyszczona, gdy używasz funkcji czyszczenia pamięci podręcznej administratora. Wyobrażam sobie, że musisz to zrobić, gdy tworzysz własny interfejs API za pomocą v2. Jakiś wgląd w tego pana Storma? –