Ejecución perfil de...
 
Avisos
Vaciar todo

Ejecución perfil de importación desde tareas Cron

7 Respuestas
2 Usuarios
0 Reactions
2,578 Visitas
(@doncorleone)
Respuestas: 22
Eminent Member
Topic starter
 

Hola, cuando ejecuto la tarea de imporación de artículos desde el administrador (en una ventana nueva) todo se importa perfectamente. Pero si ejecuto esta misma tarea desde un Cron programado, el log me da el error siguiente:

2011-01-10T18:17:13+00:00 DEBUG (7): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '105-0-1-1.0000-0' for key 2
2011-01-10T18:17:17+00:00 DEBUG (7): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '107-0-1-1.0000-0' for key 2
2011-01-10T18:17:18+00:00 DEBUG (7): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '108-0-1-1.0000-0' for key 2
2011-01-10T18:17:19+00:00 DEBUG (7): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '109-0-1-1.0000-0' for key 2
2011-01-10T18:17:21+00:00 DEBUG (7): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '110-0-1-1.0000-0' for key 2
2011-01-10T18:17:22+00:00 DEBUG (7): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '111-0-1-1.0000-0' for key 2
2011-01-10T18:17:23+00:00 DEBUG (7): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '112-0-1-1.0000-0' for key 2
2011-01-10T18:17:24+00:00 DEBUG (7): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '113-0-1-1.0000-0' for key 2
2011-01-10T18:17:25+00:00 DEBUG (7): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '114-0-1-1.0000-0' for key 2

El tema esta en que el mismo fichero, desde mi navegador se importa perfectamente.

A ver si alguien me puede ayudar,

Muchas gracias a todos.


 
Respondido : 11/01/2011 6:20 pm
OSdave
(@osdave)
Respuestas: 2099
Noble Member
 

¿puedes darnos mas detalles de lo que has hecho?
que perfil estas usando, como has configurado el CRON, ... todo lo que puedas que nos ayude a entender la situacion


Indicanos la versión que usas en tu firma (en la cabecera, Acciones del Foro -> Editar Perfil -> Editar Firma)
No toques los ficheros del core, tienes que crear modulos para modificarlo

Algunas cosas que hay que saber sobre Magento, y el comercio online

 
Respondido : 12/01/2011 8:57 am
(@doncorleone)
Respuestas: 22
Eminent Member
Topic starter
 

Utilizo este código en un php que se ejecuta bien invocándolo desde el navegador (que funciona perfectamente) o bien desde una tarea cron programada (que es donde me aparecen esos errores en el fichero .log

Saludos y gracias,

require_once '/app/Mage.php';
// wget -O - http://<www.example.com>/Cron_Import.php/?files=3XSEEEE.csv
umask(0);

//$_SERVER['SERVER_PORT']='443';
Mage::app();

$profileId = 3; //put your profile id here
// $filename = Mage::app()->getRequest()->getParam('files'); // set the filename that is to be imported - file needs to be present in var/import directory

$filename = $rutaficheros.'articulos.csv';

if (!isset($filename)) {
die("No file has been set!");
}

$logFileName= 'articulos.log';
$recordCount = 0;
//echo $logFileName;
//exit();


Mage::log("Comienza la importacion",null,$logFileName);

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

$userModel = Mage::getModel('admin/user');
$userModel->setUserId(0);
Mage::getSingleton('admin/session')->setUser($userModel);

if ($profileId) {
$profile->load($profileId);
if (!$profile->getId()) {
Mage::getSingleton('adminhtml/session')->addError('The profile you are trying to save no longer exists');
}
}

Mage::register('current_convert_profile', $profile);

$profile->run();

$batchModel = Mage::getSingleton('dataflow/batch');
if ($batchModel->getId()) {
if ($batchModel->getAdapter()) {
$batchId = $batchModel->getId();
$batchImportModel = $batchModel->getBatchImportModel();
$importIds = $batchImportModel->getIdCollection();

$batchModel = Mage::getModel('dataflow/batch')->load($batchId);
$adapter = Mage::getModel($batchModel->getAdapter());
foreach ($importIds as $importId) {
$recordCount++;
try{
$batchImportModel->load($importId);
if (!$batchImportModel->getId()) {
$errors[] = Mage::helper('dataflow')->__('Skip undefined row');
continue;
}

$importData = $batchImportModel->getBatchData();
try {
$adapter->saveRow($importData);
} catch (Exception $e) {
Mage::log($e->getMessage(),null,$logFileName);
continue;
}

if ($recordCount%20 == 0) {
Mage::log($recordCount . ' - Completedado.',null,$logFileName);
}
} catch(Exception $ex) {
Mage::log('Record# ' . $recordCount . ' - SKU = ' . $importData['sku']. ' - Error - ' . $ex->getMessage(),null,$logFileName);
}
}
foreach ($profile->getExceptions() as $e) {
Mage::log($e->getMessage(),null,$logFileName);
}

}
}
echo 'Importacion completada.';
Mage::log("Import Completed",null,$logFileName);

 
Respondido : 12/01/2011 5:44 pm
OSdave
(@osdave)
Respuestas: 2099
Noble Member
 

¿que tipo de perfil estas usando? ¿como esta configurado el perfil?
¿que version de magento? (indicalo en tu firma)


Indicanos la versión que usas en tu firma (en la cabecera, Acciones del Foro -> Editar Perfil -> Editar Firma)
No toques los ficheros del core, tienes que crear modulos para modificarlo

Algunas cosas que hay que saber sobre Magento, y el comercio online

 
Respondido : 13/01/2011 9:30 am
(@doncorleone)
Respuestas: 22
Eminent Member
Topic starter
 

Utilizo Magento 1.4.1.1 y es el perfil estándar que viene con la instalación usando un fichero CSV separado por ;


 
Respondido : 14/01/2011 4:01 pm
OSdave
(@osdave)
Respuestas: 2099
Noble Member
 

ya, pero es que puedes tener todos los campos o no, con los nombres de las columnas o no... si te estoy preguntando cosas es que necesito saberlas para poder darte una respuesta adecuada.


Indicanos la versión que usas en tu firma (en la cabecera, Acciones del Foro -> Editar Perfil -> Editar Firma)
No toques los ficheros del core, tienes que crear modulos para modificarlo

Algunas cosas que hay que saber sobre Magento, y el comercio online

 
Respondido : 17/01/2011 11:15 am
(@doncorleone)
Respuestas: 22
Eminent Member
Topic starter
 

Muchas gracias por tu ayuda, perdona que no sea más concreto. Utilizo el perfil estándar, tal y como vienen por defecto, con los nombres de las columnas en la primera línea.

Saludos,


 
Respondido : 17/01/2011 11:28 am