2012-08-08 10 views
5

Sto cercando di esportare i prodotti da 18,0000 Magento e si blocca in fase diMagento: possibile eseguire profilo di esportazione da shell ssh

Warning: Please do not close the window during importing/exporting data 

.

ho trovato che è possibile reindicizzare rapidamente questo molti prodotti utilizzando php indexer.php --reindex <code>

E 'possibile usare qualcosa di simile a forzare l'esportazione tutti i prodotti, o eseguire un profilo di flusso di dati per la sua identificazione?

+0

vedere http://stackoverflow.com/questions/7969118/magento-is-there-a-way-to-run-profile-with-cron – kervin

risposta

14

Questo eseguirà il profilo di esportazione per ID e quindi pulirà dataflow_batch_? tavolo dopo. Tenere presente che viene eseguito come utente della riga di comando e può creare file di cache come quell'utente che può essere scomodo in determinate configurazioni del server Web. Non sarebbe male cancellare la cache dopo l'esecuzione.

Per un po ', in 1.4.1.1, questo era l'unico modo per esportare grandi quantità di prodotto fino a quando non abbiamo trovato la perdita di memoria e l'abbiamo riparata.

<?php 

/*********************** 
* Import/Export Script to run Import/Export profile 
* from command line or cron. Cleans entries from dataflow_batch_(import|export) table 
***********************/ 

$mageconf = './app/etc/local.xml'; // Mage local.xml config 
$mageapp = './app/Mage.php';  // Mage app location 
$logfile = 'export_data.log';  // Import/Export log file 

/* uncomment following block when moved to server - to ensure this page is 
* not accessed from anywhere else 
*/ 

//if ($_SERVER['REMOTE_ADDR'] !== '<your server ip address>') { 
// die("You are not a cron job!"); 
//} 


/* System -> Import/Export -> Profiles get profile ID from 
* Magento Import/Export Profiles 
*/ 

$profileId = 9; 

/* Post run housekeeping table bloat removal 
* imports use "dataflow_batch_import" table 
* exports use "dataflow_batch_export" table 
*/ 

$table = 'dataflow_batch_export'; 

/* Scan Magento local.xml file for connection information */ 

if (file_exists($mageconf)) { 

$xml = simplexml_load_file($mageconf, NULL, LIBXML_NOCDATA); 

$db['host'] = $xml->global->resources->default_setup->connection->host; 
$db['name'] = $xml->global->resources->default_setup->connection->dbname; 
$db['user'] = $xml->global->resources->default_setup->connection->username; 
$db['pass'] = $xml->global->resources->default_setup->connection->password; 
$db['pref'] = $xml->global->resources->db->table_prefix; 

} 

else { 
    Mage::log('Export script failed to open Mage local.xml', null, $logfile); 
    exit('Failed to open Mage local.xml'); 
} 


/* Initialize profile to be run as Magento Admin and log start of export */ 

require_once $mageapp; 
umask(0); 
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); 

$profile = Mage::getModel('dataflow/profile'); 
$userModel = Mage::getModel('admin/user'); 
$userModel->setUserId(0); 
Mage::getSingleton('admin/session')->setUser($userModel); 
$profile->load($profileId); 
if (!$profile->getId()) { 
    Mage::getSingleton('adminhtml/session')->addError('ERROR: Incorrect profile id'); 
} 

Mage::log('Export ' . $profileId . ' Started.', null, $logfile); 

Mage::register('current_convert_profile', $profile); 
$profile->run(); 
$recordCount = 0; 
$batchModel = Mage::getSingleton('dataflow/batch'); 

Mage::log('Export '.$profileId.' Complete. BatchID: '.$batchModel->getId(), null, $logfile); 

echo "Export Complete. BatchID: " . $batchModel->getId() . "\n"; 

/* Connect to Magento database */ 

sleep(30); 

mysql_connect($db['host'], $db['user'], $db['pass']) or die(mysql_error()); 
mysql_select_db($db['name']) or die(mysql_error()); 

/* Truncate dataflow_batch_(import|export) table for housecleaning */ 

$querystring = "TRUNCATE ".$db['pref'].$table; 

mysql_query($querystring) or die(mysql_error()); 

?> 
+0

Grazie Inoltre, ho trovato un modo simile che appena completato . Hai ottenuto tutti i 18.000 prodotti dispari. Quando dici di svuotare la cache. Intendi la cache Magento o altro. Se non è Magento potresti elaborare? – James

+0

La cache Magento può ottenere i file scritti con una proprietà diversa da quella utilizzata dal server Web (nessuno, www-data, et.al.) per accedere alla cache di Magento quando si eseguono script dalla riga di comando o tramite i lavori di cron del sistema. Il server si scaglia contro una roccia quando non può né leggere né scrivere sul file della cache. Includo anche il tableflow di dataflow_batch_export perché la terribile housekeeping di Magento si è lasciata alle spalle un tavolo gonfio come un gig di questo tavolo se non lo si controlla e lo si interrompe ogni tanto (visto in 1.4.x.x e precedenti). –

+1

@FiascoLabs: è possibile eseguire admin -> system -> Import/Export tramite la riga di comando, perché il sito Web mostra un errore temporale per più di 20.000 prodotti. – Rathinam

Problemi correlati