2012-08-08 2 views
5

を輸出プロファイルを実行することが可能に私は、Magentoのから18,0000製品を輸出しようとしていることだし、それはMagentoの:シェルSSHから

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

段階で立ち往生。私はそれがすぐにphp indexer.php --reindex <code>

を使用して、この多くの製品のインデックスを再作成することは可能だということがわかりました

は輸出にすべての製品を強制、またはそのidでデータフロープロファイルを実行するために同様のものを使用することが可能ですか?

+0

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

答えて

14

IDでエクスポートプロファイルを実行し、dataflow_batch_をクリーンアップしますか?その後のテーブル。コマンドラインユーザーとして実行され、特定のWebサーバー構成で不便なユーザーとしてキャッシュファイルを作成できることに注意してください。実行後にキャッシュをクリアすることは害ではありません。

しばらくの間、1.4.1.1では、メモリリークを見つけて修正するまで、これが大量の製品をエクスポートする唯一の方法でした。

<?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

おかげで、私はちょうど完成し、同様の方法を発見した参照。すべての18,000の奇妙な製品を出しました。 キャッシュをクリアすると言うとき。あなたはマゼンタのキャッシュを意味するのでしょうか。それがMagentoではないなら、あなたは精巧にできますか? – James

+0

Magentoキャッシュは、コマンドラインまたはシステムcronジョブからスクリプトを実行するときに、MagentoのキャッシュにアクセスするためにWebサーバーが使用するもの(nobody、www-data、et.al.)とは異なる所有権でファイルを書き込むことができます。サーバーは、キャッシュファイルを読み書きできないときにロックに対してフェッチします。 Magentoの神秘的なハウスキーピングは、毎回それをチェックしたり切り捨てたりしないと(1.4.x.xおよびそれ以前のように)、このテーブルのギグと同じ大きさの膨らみを残しているため、dataflow_batch_exportテーブルのクリーンアウトも含まれています。 –

+1

@FiascoLabs:ウェブサイトが20kを超える製品の時間エラーを表示するため、コマンドラインで管理 - >システム - >インポート/エクスポートを実行できますか? – Rathinam

関連する問題