마 젠토 비누 v1 속도 향상


10

숙련 된 마 젠토 개발자에게 여러 가지 질문이 있습니다.

  1. 마 젠토 v1 비누 API의 속도를 향상시킬 수 있습니까? 데이터를 요청할 때 magento가 고객 주소 등과 같은 간단한 정보를 컴파일하는 데 1.5 초가 걸립니다.

    가능한 여러 관련 데이터 노드를 요청하려면 약 5-7 초의 비용이 소요될 수 있습니다.

    이제 AJAX 요청을 통해 해당 요청을 이미 수행하고 있으므로 페이지 인터페이스가 빠르게로드되지만 속도가 향상됩니다.

  2. 아니면 magento db에서 직접 관련 정보를 제공하기 위해 내 자신의 응용 프로그램을 작성하는 것이 더 좋습니까? 그것은 db의 그렇게 복잡하지 않으며 직접 쿼리를 수행하면 결과와 함께 100 분의 1 초 이내에로드됩니다 ...

    그 옵션에 대한 유일한 고려 사항은 다음과 같습니다.

    1. magento가 데이터베이스 구성표를 업데이트하고 변경하면 어떻게됩니까?
    2. 또는 magento의 데이터베이스 설정이 상대적으로 안전한 / 하향 호환 업그레이드입니까?

누구든지 이것과 그들의 성공 또는 실패한 이야기에 대한 경험이 있습니까? 진행 방법을 알기 위해서는 정보에 근거한 결정을 내려야합니다.


1
MySQL, Nginx 또는 기타가 아닌 PHP 바인딩 가능성이 있습니다 . 상점의 나머지 부분과 동일합니다. 상점을 빨리 만들고 API를 따르십시오. 그러나 데이터 흐름 / API 방법은 속도에 관계없이 느리게 진행되지 않습니다. 따라서 사용자 지정 구현은 관리 효율성 / 구현 시간 / 업그레이드 비용으로 인해 항상 성능이 뛰어납니다.
Ben Lessani-Sonassi

3
아냐, 그것은 PHP에 구속력이 없습니다 ... 마젠 토의 전체 설정으로 엄청나게 속도가 느려집니다. 여러 항목과 장바구니가있는 큰 상점보기 페이지를 요청하는 것보다 비누 API 요청을 완료하는 데 시간이 더 걸립니다. 마 젠토 디자인에 문제가 있습니다.
Tschallacka

답변:


8

나는이 문제를 광범위하게 만났으며 Magento 객체를 직접 사용 하여이 문제를 해결했습니다. 코드 변경에 대한 우려가 있다고 생각하지만 내 코드의 대부분은 일회용 스크립트로 오래된 데이터를로드하는 데 사용되므로 사소한 걱정이었습니다. Magento 객체를 직접 사용하면 SOAP API를 사용하는 것보다 내부 학습을 조금 더 배울 수 있다는 부수적 인 이점도 있습니다. SOAP API 만 사용하는 것보다

우리가 시도한 또 다른 옵션은 Memcached를 사용하여 데이터를 캐싱하는 것입니다 (또는 Redis 와 같은 것도 작동합니다). 그러나 이제 캐시를 업데이트하는 빈도, 위치 및 그 밖의 것들에 대해 걱정해야합니다. 그러나 데이터를 훨씬 더 빨리 검색한다는 목표를 달성했습니다. 이것이 좋은 옵션인지 아닌지는 정확히 당신이하려는 일에 달려 있다고 생각합니다.


글쎄, 내가 magento 자체에서 무언가를 만들려고한다면, magento는 여전히 요청을 처리하기 위해 "부팅"되어야하기 때문에 많은 속도 이점을 얻지 못할 것입니다. 나는 그것이 변하지 않았기 때문에 비누 API를 좋아하지만 가장 간단한 쿼리에 응답하기가 너무 늦다는 사실이 싫어. 훨씬 더 많은 요청을 처리해야하는 기본 사이트조차 훨씬 빠릅니다.
Tschallacka

내가하려는 것은 magento를 우리의 ERP 소프트웨어에 연결하는 것이므로 주어진 시간에 가장 최근의 데이터에 액세스해야합니다.
Tschallacka

1
어쩌면-필자의 경우 증분 ID별로 주문을로드 한 다음 데이터를 기반으로 작업을 수행하는 것을 작성하고있었습니다. SOAP API에서 전체 주문을로드하는 데 약 1.5 초가 걸리거나 "원시 개체"형태로 1 초가 조금 걸렸습니다. 한 번의 실행으로 수백 개의로드를로드 할 때 선택했습니다. 또 다른 제한 사항은 "magento app"스타일을 사용하여 동일한 서버에 있어야한다는 것입니다. 내 경우에는 전혀 신경 쓰지 않았지만 기억할 가치가 있습니다.
Mike

1
원시 객체 형태로 모든 것을 어떻게로드 했습니까?
Tschallacka

$order = Mage::getModel('sales/order')->load($order_id);기본적으로. 이 포럼 스레드에는 스 니펫이 두 개 더 있습니다. magentocommerce.com/boards/viewthread/18629
Mike

6

SOAP API의 속도를 높이는 것은 어려울 것입니다. 항상 여분의 하드웨어 (더 빠른 MySQL 서버)를 던지거나 NginX에서 저장소를 실행할 수 있습니다 .NginX는 몇 밀리 초가 지나면 많은 양의 http 요청을 처리하는 것이 좋습니다. 캐싱은 대부분의 전화 응답이 매번 달라 지므로 실제로 도움이되지는 않습니다.

Magento Core 모델을 사용하여 자체 API를 처음부터 작성하는 것이 가장 빠른 솔루션 일 수 있습니다. 코드를 조정하여 필요한 것을 정확하게로드하여 성능을 향상시킬 수 있기 때문입니다. 핵심 클래스를 사용한 경험에서 버전 1.5와 1.7 사이에서 크게 바뀌지 않았습니다.

편집 : 나는 잊었다. 작은 빠른 승리는 htaccess 또는 php.ini 파일에서 gzip 출력 압축을 켜거나 MySQL 데이터베이스가 아닌 경우 동일한 데이터베이스를 사용하여 SOAP api를 다른 서버로 옮기는 느낌이들 때 발생할 수 있습니다. 병목


1
mysql 데이터베이스는 병목이 아니며 병목은 모든 구성 파일을 부팅하고 모든 쓰레기를로드하고 비누 API를 컴파일 한 다음 마지막으로 요청을하고 해당 데이터를 가져 와서 평가하고 컴파일한다는 것을 기억합니다. 요청 된 형식으로, 형식을 확인한 다음 비누 연결을 통해 출력합니다 ... 확인 확인 확인 이중 확인이 좋지만 너무 느립니다. 처음에는 문제가 없지만 어느 정도 속도를 높여야합니다.
Tschallacka

Magento의 기본 캐시는 구성 파일을 결합하는 데 도움이되며 컴파일러를 사용하여 코드 속도를 높일 수 있습니다. 또한 PHP 가속기 ( en.wikipedia.org/wiki/PHP_accelerator )는 성능을 향상시킵니다. 그러나 귀하의 경우 Magento 코어 API를 사용하는 자체 API를 작성하는 것이 좋습니다.
Sander Mangel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.