2011-10-12 38 views
3

通常,在执行数据流导入配置文件(针对产品)后,用户在管理控制台中执行的下一个请求通常会比正常请求慢很多。奇怪的是,它似乎与特定的浏览器会话有关。即如果您在另一个浏览器中登录到管理控制台,系统会响应。什么代码在执行数据流配置文件后运行

运行哪些代码或进程会减慢后续的Magento请求?我可以想象它可能会有十几件事(索引,cron等),我正在寻找与会话相关的代码的特定区域,以及代码正在做什么。

+0

我一直想知道关于这个问题,好,我知道它的导入后重新编制。 –

+0

直接上传文件或引用服务器上的位置? – B00MER

+0

@ B00Mer,似乎是/或。 –

回答

0

我的猜测是解析器有一个for循环在CSV文件不断更新会话,光明的一面,至少他们意识到注释掉初始化的迭代循环的模型,并添加在他们面前:

class Mage_Dataflow_Model_Session_Parser_Csv extends Mage_Dataflow_Model_Convert_Parser_Abstract 
{ 

    public function parse() 
    { 
     $fDel = $this->getVar('delimiter', ','); 
     $fEnc = $this->getVar('enclose', '"'); 

     if ($fDel=='\\t') { 
      $fDel = "\t"; 
     } 

     // fixed for multibyte characters 
     setlocale(LC_ALL, Mage::app()->getLocale()->getLocaleCode().'.UTF-8'); 

     $fp = tmpfile(); 
     fputs($fp, $this->getData()); 
     fseek($fp, 0); 

     $data = array(); 
     $sessionId = Mage::registry('current_dataflow_session_id'); 
     $import = Mage::getModel('dataflow/import'); 
     $map = new Varien_Convert_Mapper_Column(); 
     for ($i=0; $line = fgetcsv($fp, 4096, $fDel, $fEnc); $i++) { 
      if (0==$i) { 
       if ($this->getVar('fieldnames')) { 
        $fields = $line; 
        continue; 
       } else { 
        foreach ($line as $j=>$f) { 
         $fields[$j] = 'column'.($j+1); 
        } 
       } 
      } 
      $row = array(); 
      foreach ($fields as $j=>$f) { 
       $row[$f] = $line[$j]; 
      } 
      /* 
      if ($i <= 100) 
      { 
       $data[] = $row; 
      } 
      */ 
      //$map = new Varien_Convert_Mapper_Column(); 
      $map->setData(array($row)); 
      $map->map(); 
      $row = $map->getData(); 
      //$import = Mage::getModel('dataflow/import'); 
      $import->setImportId(0); 
      $import->setSessionId($sessionId); 
      $import->setSerialNumber($i); 
      $import->setValue(serialize($row[0])); 
      $import->save(); 
      //unset($import); 
     } 

...