cron 自动激活数据流配置文件
Automatic activation dataflow profile by cron
我想通过 cron 运行 我的数据流导入配置文件,而无需在 Cron.php 或 crontab 文件中进行操作。当我手动启动时,我的配置文件正在运行。
此适配器从 csv 文件导入有关产品的数据。
我正在尝试通过以下方式 运行 此个人资料:
$profile->load($profileId);
$profile->run();
但是我cron动作后没有效果。 运行 方法无法正常工作。
文件位于正确的位置。配置文件 ID 正确,已加载配置文件。
我找到了答案。如果你想 运行 导入配置文件,你应该在 $profile->run();
之后使用此代码:
$batchModel = Mage::getSingleton('dataflow/batch');
$batchImportModel = $batchModel->getBatchImportModel();
$adapter = $batchModel->getAdapter();
$importIds = $batchImportModel->getIdCollection();
foreach ($importIds as $importId) {
$batchImportModel->load($importId);
try {
$importData = $batchImportModel->getBatchData();
Mage::getModel($adapter)->saveRow($importData);
} catch (Exception $e) {
Mage::log("Exception : " . $e);
continue;
}
}
if (method_exists($adapter, 'getEventPrefix')) {
// Event to process rules relationships after import
Mage::dispatchEvent($adapter->getEventPrefix() . '_finish_before', array(
'adapter' => $adapter
));
// Clear affected ids for possible reuse
$adapter->clearAffectedEntityIds();
}
我想通过 cron 运行 我的数据流导入配置文件,而无需在 Cron.php 或 crontab 文件中进行操作。当我手动启动时,我的配置文件正在运行。 此适配器从 csv 文件导入有关产品的数据。 我正在尝试通过以下方式 运行 此个人资料:
$profile->load($profileId);
$profile->run();
但是我cron动作后没有效果。 运行 方法无法正常工作。 文件位于正确的位置。配置文件 ID 正确,已加载配置文件。
我找到了答案。如果你想 运行 导入配置文件,你应该在 $profile->run();
之后使用此代码:
$batchModel = Mage::getSingleton('dataflow/batch');
$batchImportModel = $batchModel->getBatchImportModel();
$adapter = $batchModel->getAdapter();
$importIds = $batchImportModel->getIdCollection();
foreach ($importIds as $importId) {
$batchImportModel->load($importId);
try {
$importData = $batchImportModel->getBatchData();
Mage::getModel($adapter)->saveRow($importData);
} catch (Exception $e) {
Mage::log("Exception : " . $e);
continue;
}
}
if (method_exists($adapter, 'getEventPrefix')) {
// Event to process rules relationships after import
Mage::dispatchEvent($adapter->getEventPrefix() . '_finish_before', array(
'adapter' => $adapter
));
// Clear affected ids for possible reuse
$adapter->clearAffectedEntityIds();
}