执行数据流配置文件后运行的代码

时间:2011-10-12 16:20:10

标签: php magento

通常,在执行数据流导入配置文件(对于产品)之后,用户在管理控制台中发出的下一个请求将明显慢于正常请求。奇怪的是,它似乎与特定的浏览器会话相关联。即如果您在另一个浏览器中登录管理控制台,则系统会响应。

正在运行哪些代码或进程会减慢后续的Magento请求?我可以想到它可能有十几种(索引,cron等),我正在寻找将此与会话联系起来的特定代码区域,以及该代码正在做什么。

1 个答案:

答案 0 :(得分:0)

我的猜测是在Parser中有一个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);
        }

...