Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Como importar productos mas rapido? 
 
Sebastian Caffarelli
Jr. Member
 
Total Posts:  7
Joined:  2009-05-15
 

Hola, estoy intentando importar 4000 productos a mi tienda en la web y la verdad que el proceso tarda mas de 6 horas. Cada registro se toma su buen tiempo.

Alguno sabe algun truco o algo para poder hacer esto mas rapido?

Gracias
Sebastian

 
Magento Community Magento Community
Magento Community
Magento Community
 
Damian Culotta
Enthusiast
 
Total Posts:  878
Joined:  2008-12-10
Argentina
 

La API… vuela.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Sebastian Caffarelli
Jr. Member
 
Total Posts:  7
Joined:  2009-05-15
 

Justamente me fui a usar la API porque pensaba que podria andar mas rapido pero no, es lo mismo. Te adjunto el codigo que estoy usando a ver si ves algo que este mal o algo que pueda modificar para que ande mas rapido.

Por otro lado vos como lo ejecutas? con el cron o en el browser directamente?

Gracias
Sebastian

File Attachments
import.php  (File Size: 6KB - Downloads: 545)
 
Magento Community Magento Community
Magento Community
Magento Community
 
Damian Culotta
Enthusiast
 
Total Posts:  878
Joined:  2008-12-10
Argentina
 

Sobre la ejecución, depende el caso (a veces directamente por consola).
¿Es decir que éste codigo te anda pero tu problema es la performance?

 
Magento Community Magento Community
Magento Community
Magento Community
 
Sebastian Caffarelli
Jr. Member
 
Total Posts:  7
Joined:  2009-05-15
 

El codigo me funciona si estoy subiendo menos de 10 productos. Ahora si intento subir 4000 articulos no funciona, se cae la conexion, es como que hay un time out the la pagina web y muere. Lo intente hacer por CRON y aparentemente es lo mismo.

Tenes alguna otra idea? o algun codigo que pueda utilizar o algo?

Gracias
Sebas

 
Magento Community Magento Community
Magento Community
Magento Community
 
Damian Culotta
Enthusiast
 
Total Posts:  878
Joined:  2008-12-10
Argentina
 

Nop, pero hagamos algunas pruebas. (PM)

 
Magento Community Magento Community
Magento Community
Magento Community
 
luisabarca
Jr. Member
 
Avatar
Total Posts:  8
Joined:  2009-01-25
Acapulco
 

Yo lo que hice fue primero sacar de un archivo excel los articulos a importar, y los pone en un arreglo con javascript, con los datos minimos como SKU, nombre, etc.

Despues, recorro el arreglo llamando con AJAX a un archivo, pasandole los datos del articulo, este archivo es el que llama la API de magento.

Asi me pude evitar el que se corte la conexion, puedo importar desde 1 hasta 5 mil, pues lo que se lleva de tiempo es sacar los productos.

Ademas le puse un efecto con Yahoo UI para que se vea el porcentaje de avance y se actualizan o registran hasta 5 a la vez, aqui en el ejemplo solo te pongo 2 a la vez.

Saludos, espero te sirva

<script type="text/javascript\">
var reg = new Array();
<?php

// Obtener datos del repositorio de datos, en mi caso un libro de excel

echo sprintf("reg[%d] = {sku: '%s', name: '%s', qty: '%s', cost: '%s', price: '%s', specialprice: '%s', cats: '%s',
url_key: '%s', status: '%s', is_in_stock: '%s', netcost: '%s', total:'%s', comision: '%s'};\n",
$contador, $sku, $items[$sku]->name, $items[$sku]->qty, $items[$sku]->netCost, $items[$sku]->price,
$items[$sku]->specialPrice, join(',', $catList), $items[$sku]->url_key, $status, $is_in_stock,
$items[$sku]->cost, $total, $comision);

$contador++;
unset($items[$sku]);
}

/*
mysql_close($con);
unset($con);
*/

?>
</script>
<script type="text/javascript\" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript\" src="http://yui.yahooapis.com/2.8.0r4/build/yahoo-dom-event/yahoo-dom-event.js"></script>
<script type="text/javascript\" src="http://yui.yahooapis.com/2.8.0r4/build/animation/animation-min.js"></script>
<script type="text/javascript\" src="http://yui.yahooapis.com/2.8.0r4/build/element/element-min.js"></script>
<script type="text/javascript\" src="http://yui.yahooapis.com/2.8.0r4/build/progressbar/progressbar-min.js"></script>
<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/2.8.0r4/build/progressbar/assets/skins/sam/progressbar.css" />
<style>
body {background-color: #f9f9f9; font-family: Verdana; font-size: 9pt; text-align: center}
</style>
</head>
<body class="yui-skin-sam">
<div style="border: 1px solid #888; background-color: #fff; padding: 15px; margin: 0 auto; width: 80%; text-align: left">
<br>
<div style="margin: 0 auto; text-align: center;">
<h2 id="title">Por favor espere...</h2>
<div id="basic" style="margin: o auto;"></div>
</div>
<div id="results"></div>
</div>
<script type="text/javascript\">
var pb;
var porcent = 1;

$(window).ready(function()
{
var current = 0;
var count = 0;
var puntos = “...”;
var limit = reg.length;

var Dom = YAHOO.util.Dom, Event = YAHOO.util.Event;
pb = new YAHOO.widget.ProgressBar({value:0, minValue:0, maxValue:limit, width: 700, height: 70}).render(’basic’);

var anim = pb.get(’anim’);

if (anim) {
anim.method = YAHOO.util.Easing[’elasticBoth’];
}

pb.set(’anim’, anim);

function llamar(index)
{
current++;

if (current > limit) {
return 1;
}

$.get("/importar-exec.php", reg[index], function(data, status)
{
var txt = (index + 1) + “/” + limit + “: “ + reg[index][’sku’] + “ “ + reg[index][’name’] + “ : “ + data;

if (count == 0) {
count++;
puntos = “.”;
} else if (count == 1) {
count++;
puntos = “..”;
} else if (count == 2){
count++;
puntos = “...”;
} else {
count = 0;
puntos = “....”;
}

$("#title").html("Por favor espere” + puntos);

$("#results").prepend("<p id=\"res" + index + “\” style=\"display: none\">" + txt + “</p>");
$("#res" + index).fadeIn(’slow’);

pb.set(’value’, porcent++);

if (porcent > limit) {
$("#title").html("Importación finalizada");
}

llamar(current);
return 0;
});
}

llamar(0);

if (limit > 2) {
llamar(1);
}
});
</script>
</body>
</html>

 
Magento Community Magento Community
Magento Community
Magento Community
 
JavierP
Jr. Member
 
Total Posts:  9
Joined:  2012-08-14
 

Prueba este servicio http://www.file2cart.com/supported-carts/55-magento
Es muy rapido. Te ayudara importar todo lo que necesitas en unas pocas horas, creéme.

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top