通常,在执行数据流导入配置文件(对于产品)之后,用户在管理控制台中发出的下一个请求将明显慢于正常请求。奇怪的是,它似乎与特定的浏览器会话相关联。即如果您在另一个浏览器中登录管理控制台,则系统会响应。
正在运行哪些代码或进程会减慢后续的Magento请求?我可以想到它可能有十几种(索引,cron等),我正在寻找将此与会话联系起来的特定代码区域,以及该代码正在做什么。
答案 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);
}
...