Лыжи не едут.
Пытаюсь импортировать очень большой каталог, со сложной структурой и тп.
прогресс с помощью ob_flush()
Сначала создаю термины, потом ноду с товарами.
У терминов 5 левелов. С терминами все нормально.
Когда доходит дело до product_display то проверяю функцией по полю с уникальным номером и по условию добавляю карточку товара с товарами.
если кратко :
1. проверить по коду (уникальный на каждую карточку товаров)
2. добавить карточку с товарами, если нет такой на сайте
Все работает, импорт запускается.
И тут начинается непонятное.
Если несколько раз запустить и остановить импорт, то, ИНОГДА, РАНДОМНАЯ карточка товара может быть добавлена несколько раз.
<?php
$nid = XXXXXXXX_catalog_search_product_display ($data_l5_item, $data_l5_item->short_name);
//Если не найшли ноду
if(!$nid) {
$nid = XXXXXXXX_catalog_add_product_display ($data_product_display, $parent_l4); //Добавление карточки и товаров
}
//Ищем карточку товара по коду
function XXXXXXXX_catalog_search_product_display ($data_l5_item, $short_name) {
displat_text($short_name,'br', 'red');
$query = db_select('node', 'n');
$query->innerJoin('field_data_field_short_name', 'u', 'n.nid = u.entity_id');
$query->fields('u', array('entity_id'));
//$query->fields('n', array('nid'));
$query->condition('u.bundle', 'product_display');
$query->condition('u.entity_type', 'node');
$query->condition('u.field_short_name_value', $short_name);
$nids = $query->execute()->fetchCol();
if(!empty(
$nids)) {
if(count($nids) == 1) {
return $nids[0];
}
else {
//Костыль
$returned_nid = $nids[0];
foreach ($nids as $key=>$nid) {
if($key > 0) {
node_delete($nid);
displat_text('node_delete $short_name = '.$short_name,'br', 'red'); //Удаляем лишний дисплей, если пробрался
}
}
print_r($nids);
return $returned_nid;
}
} else {
return
FALSE;
}
}
?>
Ошибка появляется редко. Иногда вылетает ошибка MySQL о дублях, и тоже, в случайном месте.
Такое ощущение, что MySQL не успевает записывать в таблицы, либо таблицы кешируются.
Тут я не знаю куда смотреть.
Комментарии
Не встретил https://api.drupal.org/api/drupal/modules%21node%21node.module/function/... и https://api.drupal.org/api/drupal/modules%21node%21node.module/function/... ?
И чем не подходит https://www.drupal.org/project/commerce_feeds ?