我有一个大型CSV文件,其中包含要更新的库存数据(超过35,000行)。我创建了一个扩展Mage_Catalog_Model_Convert_Adapter_Productimport的方法来进行库存更新。然后我使用高级配置文件来执行调用该方法的更新。
我手动运行配置文件时效果很好。问题是当我使用扩展来处理在cronjob中运行的配置文件时,系统加载和解析CSV文件需要很长时间。我将cronjob设置为每天早上6:15运行,但是文件的第一行直到当天下午1:20才会被处理,加载文件需要7个小时。
这使得该过程以某种方式停在中间,处理的记录少于1/3。我一直在努力弄清楚为什么,试图解决问题,但没有运气。
任何想法都会受到赞赏。
答案 0 :(得分:0)
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(使用相同的文件名)并多次调用作业。您需要确保之前的呼叫不会与较新的呼叫同时运行。
由于