Цитата |
---|
Вячеслав Довнар написал: |
Код |
---|
$vanna = 50; // количество запросов $packet = 20; // количество в пакете foreach ($tovars as $key => $good) { $k++; $batch = array_merge($batch, array( 'find_good_'.$key => 'crm.product.list?'.http_build_query( // ключик по товару array( 'sel ect' => array('ID','NAME','SECTION_ID','PROPERTY_190'), //выбираю нужные МНЕ поля 'filter' => array( 'PROPERTY_190' => $good['bitrix_custom_id'], // поле для поиска товара ) ) ), 'update_good_'.$key => 'crm.product.update?'.http_build_query( array( 'id' => '$result[find_good_'.$key.'][0][ID]', // берем результат именно из ключика по товару 'fields' => array( 'NAME' => $good['name'], // обновляю имя ) ) ) ) ); if ( ($k % $packet == 0) || ($k == count($tovars)) ) { // если набралось нужное количество запросов или же список подошел к концу $btch = executeHook($queryUrl, array('cmd' => $batch)); // выполняем хук } if ($k % ($packet*$vanna) == 0) { // если ванна наполнена ждем 2 сек sleep(2); } } |
грубо говоря получается так, это не код, а как бы объяснение структуры массива.
$batch[1] => 'crm.product.list...'
$batch[2] => 'crm.product.update from batch_1...'
$batch[3] => 'crm.product.list...'
$batch[4] => 'crm.product.update fr om batch_3...'
все же быстрее в 3 раза получается, чем если каждый товар по отдельности, проверял на объеме в 50 тыс товаров.