giovedì 1 gennaio 2015

Eseguire un’importazione in Magento da riga di comando

Come eseguire un’importazione di prodotti con DataFlow nel catalogo di Magento da terminale



L’opzione Dataflow-Profile permette di effettuare aggiornamenti del catalogo senza dover scrivere codice PHP.


Tuttavia a volte può verificarsi un timeout del web server e rendere impossibile l’effettuazione dell’operazione, abbiamo già visto nel post relativo agli indici bloccati.


Eseguire un’importazione di prodotti da riga di comando può sembrare un’operazione un po’ complicata per chi non l’abbia mai effettuata ma talvolta può essere necessaria se il web server va in timeout.


Il codice PHP necessario



In effetti per eseguire un’importazione di dati da Magento utilizzando il DataFlow sono sufficienti poche righe di codice:


<?php
//verifichiamo che lo script venga eseguito da riga di comando
if (php_sapi_name() !== 'cli') {
    die ("Esegui lo script solo da shell");
}


//identifico l’ID del profilo di importazione Dataflow
$profileId = 7;


//includo Magento
require_once 'app/Mage.php';
umask(0);
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);


//instanzio il model dataflow/profile  
$profile = Mage::getModel('dataflow/profile');


//imposto l’utente che eseguirà lo script
$userModel = Mage::getModel('admin/user');
$userModel->setUserId(0);
Mage::getSingleton('admin/session')->setUser($userModel);


//carico il profilo di importazione
$profile->load($profileId);

//controllo che il profilo esista realmente
if (!$profile->getId()) {
   Mage::getSingleton('adminhtml/session')->addError('ERROR: Incorrect profile id');
}
 
Mage::register('current_convert_profile', $profile);


//eseguo il profilo
$profile->run();
$recordCount = 0;
$batchModel = Mage::getSingleton('dataflow/batch');


//comunico nell’output che il profilo è stato eseguito
echo "EXPORT COMPLETE. BATCHID: " . $batchModel->getId();
?>


Come lanciare lo script PHP da riga di comando


Dicevamo che lo script deve essere eseguito da riga di comando, quindi andiamo su terminale e digitiamo:


php export.php

fatto.

Nessun commento:

Posta un commento