Magento 2: ಬಾಹ್ಯ ಮೂಲಗಳಿಂದ ಉತ್ಪನ್ನಗಳನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳುವುದು

Magento ಇ-ಕಾಮರ್ಸ್ ಪರಿಹಾರವಾಗಿದೆ, ಅಂದರೆ. ವೇರ್‌ಹೌಸಿಂಗ್, ಲಾಜಿಸ್ಟಿಕ್ಸ್ ಅಥವಾ ಫೈನಾನ್ಷಿಯಲ್ ಅಕೌಂಟಿಂಗ್ ಜೊತೆಗಿನ ಮಾರಾಟಕ್ಕಿಂತ ಉತ್ಪನ್ನಗಳನ್ನು ಮಾರಾಟ ಮಾಡುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ. ಇತರ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು (ಉದಾಹರಣೆಗೆ, ERP ವ್ಯವಸ್ಥೆಗಳು) ಜೊತೆಯಲ್ಲಿರುವ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಹೆಚ್ಚು ಸೂಕ್ತವಾಗಿವೆ. ಆದ್ದರಿಂದ, ಆಗಾಗ್ಗೆ Magento ಅನ್ನು ಬಳಸುವ ಅಭ್ಯಾಸದಲ್ಲಿ ಈ ಇತರ ವ್ಯವಸ್ಥೆಗಳೊಂದಿಗೆ ಅಂಗಡಿಯನ್ನು ಸಂಯೋಜಿಸುವ ಕಾರ್ಯವು ಉದ್ಭವಿಸುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, 1C).

ಒಟ್ಟಾರೆಯಾಗಿ, ಏಕೀಕರಣವನ್ನು ಡೇಟಾ ಪುನರಾವರ್ತನೆಗೆ ಕಡಿಮೆ ಮಾಡಬಹುದು:

  • ಕ್ಯಾಟಲಾಗ್ (ಉತ್ಪನ್ನಗಳು, ವಿಭಾಗಗಳು);
  • ದಾಸ್ತಾನು ಡೇಟಾ (ಗೋದಾಮುಗಳು ಮತ್ತು ಬೆಲೆಗಳಲ್ಲಿ ಉತ್ಪನ್ನದ ಸಮತೋಲನಗಳು);
  • ಗ್ರಾಹಕರು;
  • ಆದೇಶಗಳು;

ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ ಡೇಟಾವನ್ನು ಮ್ಯಾನಿಪುಲೇಟ್ ಮಾಡಲು Magento ಪ್ರತ್ಯೇಕ ವರ್ಗದ ವಸ್ತುಗಳನ್ನು ನೀಡುತ್ತದೆ - ಭಂಡಾರಗಳು. Magento ನ ವಿಶಿಷ್ಟತೆಗಳ ಕಾರಣದಿಂದಾಗಿ, ರೆಪೊಸಿಟರಿಗಳ ಮೂಲಕ ಡೇಟಾಬೇಸ್ಗೆ ಡೇಟಾವನ್ನು ಸೇರಿಸುವುದು ಕೋಡ್ ಮಾಡಲು ಸುಲಭವಾಗಿದೆ, ಆದರೆ ಅದು ನಿಧಾನವಾಗಿದೆ ಎಂದು ಹೇಳೋಣ. ಈ ಪ್ರಕಟಣೆಯಲ್ಲಿ, "ಕ್ಲಾಸಿಕ್" ರೀತಿಯಲ್ಲಿ - ರೆಪೋ ತರಗತಿಗಳನ್ನು ಬಳಸಿಕೊಂಡು Magento 2 ಗೆ ಪ್ರೋಗ್ರಾಮಿಕ್ ಆಗಿ ಉತ್ಪನ್ನವನ್ನು ಸೇರಿಸುವ ಮುಖ್ಯ ಹಂತಗಳನ್ನು ನಾನು ಪರಿಗಣಿಸುತ್ತೇನೆ.

ಗ್ರಾಹಕರು ಮತ್ತು ಆದೇಶಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಇತರ ದಿಕ್ಕಿನಲ್ಲಿ ಪುನರಾವರ್ತಿಸಲಾಗುತ್ತದೆ - Magento ನಿಂದ ಬಾಹ್ಯ ERP ವ್ಯವಸ್ಥೆಗಳಿಗೆ. ಆದ್ದರಿಂದ, ಇದು ಅವರೊಂದಿಗೆ ಸರಳವಾಗಿದೆ, Magento ಬದಿಯಲ್ಲಿ ನೀವು ಸೂಕ್ತವಾದ ಡೇಟಾವನ್ನು ಆರಿಸಬೇಕಾಗುತ್ತದೆ, ತದನಂತರ "ನಮ್ಮ ಕಡೆಯಿಂದ ಗುಂಡುಗಳು ಹಾರಿದವು".

ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ ಡೇಟಾವನ್ನು ರೆಕಾರ್ಡಿಂಗ್ ಮಾಡುವ ತತ್ವಗಳು

ಈ ಸಮಯದಲ್ಲಿ, Magento ನಲ್ಲಿ ಪ್ರೋಗ್ರಾಮ್ಯಾಟಿಕ್ ಆಗಿ ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿ ಉಳಿಸಲಾದ ವಸ್ತುಗಳನ್ನು ರಚಿಸುವ ಮೂಲಕ ಮಾಡಲಾಗುತ್ತದೆ ಕಾರ್ಖಾನೆ:

function __construct (MagentoCmsModelBlockFactory $blockFactory) {
    $this->blockFactory = $blockFactory;
}

/** @var MagentoCmsModelBlock $block */
$block = $this->blockFactory->create();

ಮತ್ತು ಡೇಟಾಬೇಸ್‌ಗೆ ಬರೆಯುವ ಮೂಲಕ ಮಾಡಲಾಗುತ್ತದೆ ರೆಪೊಸಿಟರಿಯನ್ನು:

function __construct (MagentoCmsApiBlockRepositoryInterface $blockRepo) {
    $this->blockRepo = $blockRepo;
}

$this->blockRepo->save($block);

"ಫ್ಯಾಕ್ಟರಿ" ಮತ್ತು "ರೆಪೊಸಿಟರಿ" ವಿಧಾನವನ್ನು Magento 2 ಡೊಮೇನ್‌ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಪ್ರಮುಖ ಮಾದರಿಗಳಿಗೆ ಬಳಸಬಹುದು.

ಮೂಲ ಉತ್ಪನ್ನ ಮಾಹಿತಿ

ನಾನು Magento 2.3 ಆವೃತ್ತಿಗೆ ಹೊಂದಿಕೆಯಾಗುವ ಡೇಟಾ ರಚನೆಯನ್ನು ನೋಡುತ್ತಿದ್ದೇನೆ. ಉತ್ಪನ್ನದ ಬಗ್ಗೆ ಮೂಲಭೂತ ಮಾಹಿತಿಯು ಕೋಷ್ಟಕದಲ್ಲಿದೆ catalog_product_entity (ಉತ್ಪನ್ನ ನೋಂದಾವಣೆ):

entity_id
attribute_set_id
type_id
sku
has_options
required_options
created_at
updated_at

ನಾನು ಒಂದು ರೀತಿಯ ಉತ್ಪನ್ನಕ್ಕೆ ಸೀಮಿತವಾಗಿದ್ದೇನೆ (type_id='simple'), ಡೀಫಾಲ್ಟ್ ಗುಣಲಕ್ಷಣಗಳ ಒಂದು ಸೆಟ್ (attribute_set_id=4) ಮತ್ತು ಗುಣಲಕ್ಷಣಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ has_options и required_options. ಗುಣಲಕ್ಷಣಗಳಿಂದ entity_id, created_at и updated_at ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಉತ್ಪತ್ತಿಯಾಗುತ್ತದೆ, ನಂತರ, ವಾಸ್ತವವಾಗಿ, ಹೊಸ ಉತ್ಪನ್ನವನ್ನು ಸೇರಿಸಲು, ನಾವು ಹೊಂದಿಸಬೇಕಾಗಿದೆ sku. ನಾನು ಇದನ್ನು ಮಾಡುತ್ತೇನೆ:

/** @var MagentoCatalogApiDataProductInterfaceFactory $factProd */
/** @var MagentoCatalogApiProductRepositoryInterface $repoProd */
/** @var MagentoCatalogApiDataProductInterface $prod */
$prod = $factProd->create();
$prod->setAttributeSetId(4);
$prod->setTypeId('simple');
$prod->setSku($sku);
$repoProd->save($prod);

ಮತ್ತು ನಾನು ವಿನಾಯಿತಿ ಪಡೆಯುತ್ತೇನೆ:

The "Product Name" attribute value is empty. Set the attribute and try again.

ನಾನು ಉತ್ಪನ್ನದ ಹೆಸರನ್ನು ವಿನಂತಿಗೆ ಸೇರಿಸುತ್ತೇನೆ ಮತ್ತು ಗುಣಲಕ್ಷಣವು ಕಾಣೆಯಾಗಿದೆ ಎಂಬ ಸಂದೇಶವನ್ನು ಪಡೆಯುತ್ತೇನೆ Price. ಬೆಲೆಯನ್ನು ಸೇರಿಸಿದ ನಂತರ, ಉತ್ಪನ್ನವನ್ನು ಡೇಟಾಬೇಸ್‌ಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ:

$prod = $factProd->create();
$prod->setAttributeSetId(4);
$prod->setTypeId('simple');
$prod->setSku($sku);
$prod->setName($name);
$prod->setPrice($price);
$repoProd->save($prod);

ಉತ್ಪನ್ನದ ಹೆಸರನ್ನು ಉತ್ಪನ್ನ ವರ್ಚಾರ್ ಗುಣಲಕ್ಷಣ ಕೋಷ್ಟಕದಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ (catalog_product_entity_varchar), ಬೆಲೆ - ಕೋಷ್ಟಕದಲ್ಲಿ catalog_product_entity_decimal. ಉತ್ಪನ್ನವನ್ನು ಸೇರಿಸುವ ಮೊದಲು, ಡೇಟಾವನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳಲು ನಾವು ಆಡಳಿತಾತ್ಮಕ ಅಂಗಡಿಯ ಮುಂಭಾಗವನ್ನು ಬಳಸುತ್ತಿದ್ದೇವೆ ಎಂದು ಸ್ಪಷ್ಟವಾಗಿ ಸೂಚಿಸಲು ಸಲಹೆ ನೀಡಲಾಗುತ್ತದೆ:

/** @var MagentoStoreModelStoreManagerInterface $manStore */
$manStore->setCurrentStore(0);

ಹೆಚ್ಚುವರಿ ಗುಣಲಕ್ಷಣಗಳು

Magento ಬಳಸಿಕೊಂಡು ಹೆಚ್ಚುವರಿ ಉತ್ಪನ್ನ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವುದು ಸಂತೋಷವಾಗಿದೆ. ಮುಖ್ಯ ಘಟಕಗಳಿಗೆ EAV ಡೇಟಾ ಮಾದರಿ (ಟೇಬಲ್ ನೋಡಿ eav_entity_type) ಈ ವೇದಿಕೆಯ ಪ್ರಮುಖ ವೈಶಿಷ್ಟ್ಯಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ. ನಾವು ಉತ್ಪನ್ನ ಮಾದರಿಗೆ ಸೂಕ್ತವಾದ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಸರಳವಾಗಿ ಸೇರಿಸುತ್ತೇವೆ:

$prodEntity->setData('description', $desc);
$prodEntity->setData('short_description', $desc_short);
// или
$prodEntity->setDescription($desc);
$prodEntity->setShortDescription($desc_short);

ಮತ್ತು ರೆಪೋ ವಸ್ತುವಿನ ಮೂಲಕ ಮಾದರಿಯನ್ನು ಉಳಿಸುವಾಗ:

$repoProd->save($prod);

ಹೆಚ್ಚುವರಿ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಸಹ ಅನುಗುಣವಾದ ಡೇಟಾಬೇಸ್ ಕೋಷ್ಟಕಗಳಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ.

ದಾಸ್ತಾನು ಡೇಟಾ

ಸರಳ ಪದಗಳಲ್ಲಿ - ಸ್ಟಾಕ್ನಲ್ಲಿರುವ ಉತ್ಪನ್ನದ ಪ್ರಮಾಣ. Magento 2.3 ರಲ್ಲಿ, ದಾಸ್ತಾನು ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುವ ಸ್ವರೂಪವನ್ನು ವಿವರಿಸುವ ಡೇಟಾಬೇಸ್‌ನಲ್ಲಿನ ರಚನೆಗಳು ಗಮನಾರ್ಹವಾಗಿ ವಿಭಿನ್ನವಾಗಿದೆ ಮೊದಲು ಏನಾಯಿತು. ಆದಾಗ್ಯೂ, ಉತ್ಪನ್ನದ ಮಾದರಿಯ ಮೂಲಕ ಸ್ಟಾಕ್‌ನಲ್ಲಿರುವ ಉತ್ಪನ್ನದ ಪ್ರಮಾಣವನ್ನು ಸೇರಿಸುವುದು ಇತರ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಸೇರಿಸುವುದಕ್ಕಿಂತ ಹೆಚ್ಚು ಕಷ್ಟಕರವಲ್ಲ:

/** @var MagentoCatalogModelProduct $prodEntity */
/** @var MagentoCatalogApiProductRepositoryInterface $repoProd */
$inventory = [
    'is_in_stock' => true,
    'qty' => 1234
];
$prodEntity->setData('quantity_and_stock_status', $inventory);
$repoProd->save($prodEntity);

ಮಾಧ್ಯಮ

ನಿಯಮದಂತೆ, ಅಂಗಡಿಯಲ್ಲಿನ ಕ್ಲೈಂಟ್‌ಗೆ (ಇ-ಕಾಮರ್ಸ್) ಉತ್ಪನ್ನಕ್ಕೆ ಮಾಧ್ಯಮ ಬೆಂಬಲವು ಆಂತರಿಕ ಲೆಕ್ಕಪತ್ರ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ (ERP) ಉದ್ಯೋಗಿಗೆ ಅದೇ ಉತ್ಪನ್ನಕ್ಕೆ ಮಾಧ್ಯಮ ಬೆಂಬಲದಿಂದ ಭಿನ್ನವಾಗಿದೆ. ಮೊದಲನೆಯ ಸಂದರ್ಭದಲ್ಲಿ, ಉತ್ಪನ್ನವನ್ನು ಮುಖಾಮುಖಿಯಾಗಿ ತೋರಿಸಲು ಸಲಹೆ ನೀಡಲಾಗುತ್ತದೆ, ಉತ್ಪನ್ನದ ಸಾಮಾನ್ಯ ಕಲ್ಪನೆಯನ್ನು ನೀಡಲು ಸಾಕು. ಆದಾಗ್ಯೂ, ಉತ್ಪನ್ನದ ಕನಿಷ್ಠ ಪ್ರಾಥಮಿಕ ಚಿತ್ರವನ್ನು ವರ್ಗಾಯಿಸುವುದು ತುಂಬಾ ಸಾಮಾನ್ಯವಾಗಿದೆ. case ಡೇಟಾವನ್ನು ಆಮದು ಮಾಡುವಾಗ.

ನಿರ್ವಾಹಕ ಫಲಕದ ಮೂಲಕ ಚಿತ್ರವನ್ನು ಸೇರಿಸುವಾಗ, ಚಿತ್ರವನ್ನು ಮೊದಲು ತಾತ್ಕಾಲಿಕ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಉಳಿಸಲಾಗುತ್ತದೆ (./pub/media/tmp/catalog/product) ಮತ್ತು ಉತ್ಪನ್ನವನ್ನು ಉಳಿಸಿದಾಗ ಮಾತ್ರ ಮಾಧ್ಯಮ ಡೈರೆಕ್ಟರಿಗೆ ಸರಿಸಲಾಗುತ್ತದೆ (./pub/media/catalog/product) ಅಲ್ಲದೆ, ನಿರ್ವಾಹಕ ಫಲಕದ ಮೂಲಕ ಸೇರಿಸಿದಾಗ, ಚಿತ್ರವನ್ನು ಟ್ಯಾಗ್ ಮಾಡಲಾಗಿದೆ image, small_image, thumbnail, swatch_image.

/** @var MagentoCatalogApiProductRepositoryInterface $repoProd */
/** @var MagentoCatalogModelProductGalleryCreateHandler $hndlGalleryCreate */
/* $imagePath = '/path/to/file.png';  $imagePathRelative = '/f/i/file.png' */
$imagePathRelative = $this->imagePlaceToTmpMedia($imagePath);
/* reload product with gallery data */
$product = $repoProd->get($sku);
/* add image to product's gallery */
$gallery['images'][] = [
    'file' => $imagePathRelative,
    'media_type' => 'image'
    'label' => ''
];
$product->setData('media_gallery', $gallery);
/* set usage areas */
$product->setData('image', $imagePathRelative);
$product->setData('small_image', $imagePathRelative);
$product->setData('thumbnail', $imagePathRelative);
$product->setData('swatch_image', $imagePathRelative);
/* create product's gallery */
$hndlGalleryCreate->execute($product);

ಕೆಲವು ಕಾರಣಗಳಿಗಾಗಿ, ಮೊದಲು ಉತ್ಪನ್ನವನ್ನು ಉಳಿಸಿದ ನಂತರ ಮತ್ತು ಅದನ್ನು ರೆಪೊಸಿಟರಿಯಿಂದ ಹಿಂಪಡೆದ ನಂತರ ಮಾತ್ರ ಮಾಧ್ಯಮವನ್ನು ಲಿಂಕ್ ಮಾಡಲಾಗಿದೆ. ಮತ್ತು ನೀವು ಗುಣಲಕ್ಷಣವನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬೇಕಾಗಿದೆ label ಉತ್ಪನ್ನ ಮಾಧ್ಯಮ ಗ್ಯಾಲರಿಗೆ ನಮೂದನ್ನು ಸೇರಿಸುವಾಗ (ಇಲ್ಲದಿದ್ದರೆ ನಾವು ವಿನಾಯಿತಿ ಪಡೆಯುತ್ತೇವೆ Undefined index: label in .../module-catalog/Model/Product/Gallery/CreateHandler.php on line 516).

ವರ್ಗಗಳು

ಸಾಮಾನ್ಯವಾಗಿ, ಅಂಗಡಿಯ ವರ್ಗ ರಚನೆ ಮತ್ತು ಬ್ಯಾಕೆಂಡ್ ಅಪ್ಲಿಕೇಶನ್ ಅಥವಾ ಅವುಗಳಲ್ಲಿನ ಉತ್ಪನ್ನಗಳ ನಿಯೋಜನೆಯು ಗಮನಾರ್ಹವಾಗಿ ಭಿನ್ನವಾಗಿರುತ್ತದೆ. ವರ್ಗಗಳು ಮತ್ತು ಉತ್ಪನ್ನಗಳ ಕುರಿತು ಡೇಟಾವನ್ನು ಸ್ಥಳಾಂತರಿಸುವ ತಂತ್ರಗಳು ಅನೇಕ ಅಂಶಗಳನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ. ಈ ಉದಾಹರಣೆಯಲ್ಲಿ ನಾನು ಈ ಕೆಳಗಿನವುಗಳಿಗೆ ಅಂಟಿಕೊಳ್ಳುತ್ತೇನೆ:

  • ಬ್ಯಾಕೆಂಡ್ ಮತ್ತು ಸ್ಟೋರ್ ವರ್ಗಗಳನ್ನು ಹೆಸರಿನಿಂದ ಹೋಲಿಸಲಾಗುತ್ತದೆ;
  • ಅಂಗಡಿಯಲ್ಲಿ ಇಲ್ಲದ ವರ್ಗವನ್ನು ಆಮದು ಮಾಡಿಕೊಂಡರೆ, ಅದನ್ನು ಮೂಲ ವರ್ಗದ ಅಡಿಯಲ್ಲಿ ರಚಿಸಲಾಗುತ್ತದೆ (Default Category) ಮತ್ತು ಸ್ಟೋರ್ ಕ್ಯಾಟಲಾಗ್‌ನಲ್ಲಿ ಅದರ ಮುಂದಿನ ಸ್ಥಾನವನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಊಹಿಸಲಾಗಿದೆ;
  • ಉತ್ಪನ್ನವನ್ನು ಅಂಗಡಿಯಲ್ಲಿ ರಚಿಸಿದಾಗ ಮಾತ್ರ ವರ್ಗಕ್ಕೆ ನಿಯೋಜಿಸಲಾಗಿದೆ (ಮೊದಲ ಆಮದು);

ವರ್ಗದ ಬಗ್ಗೆ ಮೂಲಭೂತ ಮಾಹಿತಿ ಕೋಷ್ಟಕದಲ್ಲಿದೆ catalog_category_entity (ವರ್ಗಗಳ ಕ್ಯಾಟಲಾಗ್). Magento ನಲ್ಲಿ ವರ್ಗವನ್ನು ರಚಿಸುವುದು:

/** @var MagentoCatalogApiDataCategoryInterfaceFactory $factCat */
/** @var MagentoCatalogApiCategoryRepositoryInterface $repoCat */
$cat = $factCat->create();
$cat->setName($name);
$cat->setIsActive(true);
$repoCat->save($cat);

ಉತ್ಪನ್ನವನ್ನು ವರ್ಗಕ್ಕೆ ಲಿಂಕ್ ಮಾಡುವುದನ್ನು ವರ್ಗ ID ಮತ್ತು ಉತ್ಪನ್ನ SKU ಬಳಸಿ ನಡೆಸಲಾಗುತ್ತದೆ:

/** @var MagentoCatalogModelCategoryProductLinkFactory $factCatProdLink */
/** @var MagentoCatalogApiCategoryLinkRepositoryInterface $repoCatLink */
$link = $factCatProdLink->create();
$link->setCategoryId($catMageId);
$link->setSku($prodSku);
$repoCatLink->save($link);

ಒಟ್ಟು

Magento 2 ಗೆ ಪ್ರೋಗ್ರಾಮಿಕ್ ಆಗಿ ಉತ್ಪನ್ನವನ್ನು ಸೇರಿಸಲು ಕೋಡ್ ಬರೆಯುವುದು ತುಂಬಾ ಸುಲಭ. ನಾನು ಮೇಲೆ ಹೇಳಿರುವ ಎಲ್ಲವನ್ನೂ ಡೆಮೊ ಮಾಡ್ಯೂಲ್ ಆಗಿ ಸಂಯೋಜಿಸಿದ್ದೇನೆ "flancer32/mage2_ext_demo_import". ಮಾಡ್ಯೂಲ್‌ನಲ್ಲಿ ಕೇವಲ ಒಂದು ಕನ್ಸೋಲ್ ಆಜ್ಞೆಯಿದೆ fl32:import:prod, ಇದು JSON ಫೈಲ್‌ನಲ್ಲಿ ವಿವರಿಸಿದ ಉತ್ಪನ್ನಗಳನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳುತ್ತದೆ "./etc/data/products.json":

[
  {
    "sku": "...",
    "name": "...",
    "desc": "...",
    "desc_short": "...",
    "price": ...,
    "qty": ...,
    "categories": ["..."],
    "image_path": "..."
  }
]

ಆಮದುಗಾಗಿ ಚಿತ್ರಗಳು ಕ್ಯಾಟಲಾಗ್‌ನಲ್ಲಿವೆ ./etc/data/img.

ಈ ವಿಧಾನವನ್ನು ಬಳಸಿಕೊಂಡು 10 ಉತ್ಪನ್ನಗಳನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳುವ ಸಮಯ ನನ್ನ ಲ್ಯಾಪ್‌ಟಾಪ್‌ನಲ್ಲಿ ಸುಮಾರು 10 ಸೆಕೆಂಡುಗಳು. ನಾವು ಈ ಕಲ್ಪನೆಯನ್ನು ಮತ್ತಷ್ಟು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದರೆ, ಗಂಟೆಗೆ ಸುಮಾರು 3600 ಉತ್ಪನ್ನಗಳನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳಬಹುದು ಮತ್ತು 100K ಉತ್ಪನ್ನಗಳನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳಲು ಸುಮಾರು 30 ಗಂಟೆಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು ಎಂಬ ತೀರ್ಮಾನಕ್ಕೆ ಬರುವುದು ಸುಲಭ. ಲ್ಯಾಪ್‌ಟಾಪ್ ಅನ್ನು ಸರ್ವರ್‌ನೊಂದಿಗೆ ಬದಲಾಯಿಸುವುದರಿಂದ ಪರಿಸ್ಥಿತಿಯನ್ನು ಸ್ವಲ್ಪಮಟ್ಟಿಗೆ ಸುಗಮಗೊಳಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಬಹುಶಃ ಹಲವಾರು ಬಾರಿ. ಆದರೆ ಪರಿಮಾಣದ ಆದೇಶಗಳಿಂದ ಅಲ್ಲ. ಬಹುಶಃ ಈ ವೇಗ ಮತ್ತು ನಿಧಾನತೆಯು ಯೋಜನೆಯ ಹೊರಹೊಮ್ಮುವಿಕೆಗೆ ಸ್ವಲ್ಪ ಮಟ್ಟಿಗೆ ಒಂದು ಕಾರಣವಾಗಿದೆ magento/ಅಸಿಂಕ್-ಆಮದು.

ಆಮದು ವೇಗವನ್ನು ಹೆಚ್ಚಿಸಲು ಆಮೂಲಾಗ್ರ ಪರಿಹಾರವು ಡೇಟಾಬೇಸ್‌ಗೆ ನೇರ ಪ್ರವೇಶವಾಗಬಹುದು, ಆದರೆ ಈ ಸಂದರ್ಭದಲ್ಲಿ Magento ನ ವಿಸ್ತರಣೆಗೆ ಸಂಬಂಧಿಸಿದ ಎಲ್ಲಾ “ಗುಡೀಸ್” ಕಳೆದುಹೋಗುತ್ತದೆ - ನೀವು ಎಲ್ಲವನ್ನೂ “ಸುಧಾರಿತ” ನೀವೇ ಮಾಡಬೇಕಾಗುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಇದು ಯೋಗ್ಯವಾಗಿದೆ. ಅದು ಕಾರ್ಯರೂಪಕ್ಕೆ ಬಂದರೆ, ಮುಂದಿನ ಲೇಖನದಲ್ಲಿ ಡೇಟಾಬೇಸ್‌ಗೆ ನೇರ ಬರವಣಿಗೆಯ ವಿಧಾನವನ್ನು ನಾನು ಪರಿಗಣಿಸುತ್ತೇನೆ.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ