0

我有一个包含要更新的库存数据的大型 CSV 文件(超过 35,000 行)。我创建了一个扩展 Mage_Catalog_Model_Convert_Adapter_Productimport 的方法来进行库存更新。然后我使用高级配置文件来进行调用该方法的更新。

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

这使得进程以某种方式在中间停止,只有不到 1/3 的记录被处理。我一直很沮丧试图找出原因,试图解决问题,但没有运气。

任何想法,将不胜感激。

4

1 回答 1

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(使用相同的文件名)并多次调用该作业。您需要确保之前的呼叫不会与新的呼叫同时运行。

谢谢

于 2012-06-25T01:31:55.957 回答