Как указать максимальный набор результатов для запросов Magento SOAP?
Я запрашиваю Magento через SOAP API для списка заказов, соответствующих данному статусу. У нас есть несколько удаленных хостов, которые слишком долго возвращают список, поэтому я хотел бы ограничить набор результатов, однако я не вижу для этого параметра.
$orderListRaw = $proxy -> call ( $sessionId, 'sales_order.list', array ( array ( 'status' => array ( 'in' => $orderstatusarray ) ) ) );
Я смог убедиться, что мы вернем данные (через 6 минут) и смогли справиться с тайм-аутами и т. Д., Но предпочли бы просто навязать максимальный набор результатов.
Не похоже, что это можно сделать с помощью limit (плюс вам нужно будет сделать сложную логику разбиения на страницы, чтобы получить все записи, потому что вам нужно знать общее количество записей, а api не имеет для этого метода) См. Список вызовов api @ http://www.magentocommerce.com/api/soap/sales/salesOrder/sales_order.list.html
Но то, что вы можете сделать в качестве работы, – это использование сложных фильтров, чтобы ограничить базу набора результатов на дату создания. (приспосабливайтесь к вечной, дневной или недельной базе по объему заказа).
Кроме того, поскольку вы используете тип статуса (при условии, что вы исключаете больше, чем просто отменить заказ), вы можете подумать о получении всего заказа и отслеживать состояние order_id / status локально (обрабатывать только те, у которых указан выше статус) и оставшаяся часть, которая не была продолжена, будет списком идентификатора заказа, который может понадобиться вам позже
Пример псевдокода
$params = array(array( 'filter' => array( array( 'key' => 'status', 'value' => array( 'key' => 'in', 'value' => $orderstatusarray, ), ), ), 'complex_filter' => array( array( 'key' => 'created_at', 'value' => array( 'key' => 'gteq', 'value' => '2012-11-25 12:00:00' ), ), array( 'key' => 'created_at', 'value' => array( 'key' => 'lteq', 'value' => '2012-11-26 11:59:59' ), ), ) )); $orderListRaw = $proxy -> call ( $sessionId, 'sales_order.list', $params);
Подробнее о фильтрации @ http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-8-varien-data-collections