Performance Magento数据流加载CSV文件花费的时间太长

Performance Magento数据流加载CSV文件花费的时间太长,performance,magento,profile,dataflow,Performance,Magento,Profile,Dataflow,我有一个大型CSV文件,其中包含要更新的库存数据(超过35000行)。我创建了一个扩展Mage\u Catalog\u Model\u Convert\u Adapter\u Productimport的方法来更新库存。然后,我使用了一个高级配置文件来进行更新,该更新调用了该方法 当我手动运行配置文件时,它工作得非常好。问题是,当我使用一个扩展来处理cronjob中运行的概要文件时,系统加载和解析CSV文件的时间太长。我将cronjob设置为每天早上6:15运行,但是文件的第一行直到当天下午1:

我有一个大型CSV文件,其中包含要更新的库存数据(超过35000行)。我创建了一个扩展Mage\u Catalog\u Model\u Convert\u Adapter\u Productimport的方法来更新库存。然后,我使用了一个高级配置文件来进行更新,该更新调用了该方法

当我手动运行配置文件时,它工作得非常好。问题是,当我使用一个扩展来处理cronjob中运行的概要文件时,系统加载和解析CSV文件的时间太长。我将cronjob设置为每天早上6:15运行,但是文件的第一行直到当天下午1:20才被处理,加载文件需要7个小时

<>这使得过程在中间停止,少于1/3个记录被处理。我一直在沮丧地试图找出原因,试图解决问题,但没有运气


任何想法都将不胜感激。

Varien_File_Csv是解析您的Csv文件的类。 它占用了太多的内存

用于记录已使用内存量和峰值内存使用量的函数

public function log($msg, $level = null)
{
if (is_null($level)) $level = Zend_Log::INFO;

$units = array('b', 'Kb', 'Mb', 'Gb', 'Tb', 'Pb');
$m = memory_get_usage();
$mem = @round($m / pow(1024, ($i = floor(log($m, 1024)))), 2).' '.$units[$i];
$mp = memory_get_peak_usage();
$memp = @round($mp / pow(1024, ($ip = floor(log($mp, 1024)))), 2).' '.$units[$ip];

$msg = sprintf('(mem %4.2f %s, %4.2f %s) ', $mem, $units[$i], $memp, $units[$ip]).$msg;

Mage::log($msg, $level, 'my_log.log', 1);
}
$MyClass->log('我记录的每一条消息都让内存更接近天空')

您可以拆分csv(使用相同的文件名)并多次调用作业。您需要确保前一个呼叫不会与新呼叫同时运行


谢谢

加载文件需要“7小时”,这似乎很奇怪。你确认了在早上6点15分开始吗?我的猜测是,我会从您创建的方法中记录一些snot。将它记录到您自己的日志文件
Mage::Log('blah blah',null,'yourlogfile.Log')
这样您就可以看到发生了什么,确保每次迭代只处理服务器资源允许的行数(记录数)。