Публикация

подписчиков: 4 Подписаться
0
Avatar

Массовое обновление товаров

Пробую с помощью скрипта на сайте обновить цены в МоемСкладе у товаров и модификаций. сущностей примерно 24000. пробую пакетное обновление через POST запрос. после обновления примерно 1600 сущностей выдает ошибку 500. и так каждый раз. т.е. за один раз скрипт может обновить только 1600 сущностей. да и пакетное обновление работает медленно. один запрос к МС для обновления 100 сущностей занимает около 7-10 секунд. хотя я ставлю только цены для обновления. Есть какой-то способ для более быстрого обновления товаров в МоемСкладе?

Максим

Войдите в службу, чтобы оставить комментарий.

Комментариев: 14

0
Avatar

Едва ли есть какой-то другой вариант. Только посылать порционно массивы PUT и лимитировать скорость чтобы не вызывало ошибку превышения лимита. И не стоит тут ждать быстрого ответа =) Некоторые мои вопросы без ответа висят больше месяца и едва ли до них кто-то дойдёт)

Дмитрий 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Добрый день!

Ваша проблема включена в план разработки. Уточните, пожалуйста, на какой аккаунт идет запрос?

Ivan Pivkin 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

ошибся. в функции ошибку допустил. вот исправленная версия. отправка одного пакета занимает 26 секунд

public function UpdatePricesInMC(){
$products=array();
$variants=array();
$p=0;
$v=0;
$sql='SELECT {{catalog}}.art, {{catalog}}.price, {{catalog}}.oldprice, {{mc_uuids}}.type, {{mc_uuids}}.uuid, {{mc_uuids}}.id as uuid_id FROM {{catalog}}
INNER JOIN {{mc_uuids}} ON ({{mc_uuids}}.art={{catalog}}.art)
WHERE {{mc_uuids}}.uuid!=\'\' ';
$list=DB::getAll($sql);
foreach($list as $item){
$tmp=array();
$tmp=array(
'meta'=>array(
'href'=>'https://online.moysklad.ru/api/remap/1.1/entity/'.$item['type'].'/'.$item['uuid'],
'metadataHref'=>'https://online.moysklad.ru/api/remap/1.1/entity/product/metadata',
'type'=>$item['type'],
'mediaType'=>'application/json'),
'salePrices'=>array(0=>array('value'=>($item['price']*100), 'priceType'=>'Цена продажи'), 0=>array('value'=>($item['oldprice']*100), 'priceType'=>'Старая цена'))
);
if($item['type']=='product'){
if(count($products[$p]['vals'])==100)
$p++;
$products[$p]['vals'][]=$tmp;
$products[$p]['ids'][]=$item['uuid_id'];
}elseif($item['type']=='variant'){
if(count($variants[$v]['vals'])==100)
$v++;
$variants[$v]['vals'][]=$tmp;
$variants[$v]['ids'][]=$item['uuid_id'];
}
}
foreach($products as $prod){
//$start=microtime(true);
$ret=$this->getData('https://online.moysklad.ru/api/remap/1.1/entity/product/', 'POST', $prod['vals']);
//echo (microtime(true)-$start);
//die;
if(count($prod['ids'])>0){
$sql='UPDATE {{mc_uuids}} SET sended=1 WHERE id IN ('.implode(', ', $prod['ids']).')';
DB::exec($sql);
}
}
foreach($variants as $var){
$this->getData('https://online.moysklad.ru/api/remap/1.1/entity/variant/', 'POST', $var['vals']);
if(count($var['ids'])>0){
$sql='UPDATE {{mc_uuids}} SET sended=1 WHERE id IN ('.implode(', ', $var['ids']).')';
DB::exec($sql);
}
}

}

Максим 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Логи с упомянутым вами логином vladimirbrashop не могу найти, поэтому еще раз уточняю. Можете написать на почту

Ivan Pivkin 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

прошу уведомить, когда будет решена проблема. если решить не получится, то предложите альтернативу. т.к. на данный момент при таких объемах товаров данный вариант не подходит

Максим 0 проголосовали
Действия с комментариями Постоянная ссылка
-1
Avatar

Добрый день. В данный момент на указанном вами аккаунте vladimirbrashop наблюдается только 1800 товаров. Попытка провести исследование и симитировать аналогичную ситуацию с обновлением товаров не дала ошибок 500. Если ошибки у вас повторяются - пришлите, пожалуйста, логи с запросами, ответами от нашего АПИ и временем выполнения запроса в этот тред, либо в нашу техподдержку.

 

По вопросу долгого времени обновления сущностей - оптимизация будет проводиться в следующей версии АПИ.

Екатерина Евтухова -1 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

))))))))))))))))))))))))) спустя месяц получил ответ. Спасибо. Вот только читайте внимательно сообщение. Я писал про товары и их модификации, а не только про товары. Тех поддержка как всегда на высоте!

Максим 0 проголосовали
Действия с комментариями Постоянная ссылка