通常,在执行数据流导入配置文件(针对产品)后,用户在管理控制台中发出的下一个请求将比正常请求慢得多。奇怪的是,它似乎与特定的浏览器 session 相关联。即,如果您在另一个浏览器中登录到管理控制台,系统会响应。
正在运行哪些代码或进程会减慢后续 Magento 请求的速度?我可以想到很多事情(索引、cron 等),我正在寻找将它与 session 联系起来的特定代码区域,以及该代码在做什么。
最佳答案
我的猜测是在 Parser 中有一个用于不断更新 session 的 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);
}
...
关于php - 执行数据流配置文件后运行的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7743232/