loadTotalBySessionId($sessionId); $callbacks = array(); if ($mapperCb = $this->_parseCallback($this->getVar('mapper'), 'mapRow')) { $callbacks[] = $mapperCb; } if ($adapterCb = $this->_parseCallback($this->getVar('adapter'), 'saveRow')) { $callbacks[] = $adapterCb; } $callbacks[] = array($this, 'updateProgress'); echo $this->_getProgressBarHtml($sessionId, $total['cnt']); Mage::getModel('core/resource_iterator') ->walk($import->select($sessionId), $callbacks); } protected function _getProgressBarHtml($sessionId, $totalRows) { return '
  • '.$this->__('Total records: %s', ''.$totalRows.'').', '.$this->__('Processed records: %s', '0').', '.$this->__('ETA: %s', 'N/A').', '.$this->__('Memory Used: %s', ''.memory_get_usage(true).'').'
  • '; } public function updateProgress($args) { $memory = !empty($args['memory']) ? $args['memory'] : ''; echo ''; echo '
  • '.$memory.'
  • '; return array(); } protected function _parseCallback($callback, $defaultMethod=null) { if (!preg_match('#^([a-z0-9_/]+)(::([a-z0-9_]+))?$#i', $callback, $match)) { return false; } if (!($model = Mage::getModel($match[1]))) { return false; } if (!($method = $match[3] ? $match[3] : $defaultMethod)) { return false; } return array($model, $method); } }