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

标签 php magento

通常,在执行数据流导入配置文件(针对产品)后,用户在管理控制台中发出的下一个请求将比正常请求慢得多。奇怪的是,它似乎与特定的浏览器 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/

相关文章:

php - 如果服务器离线,如何告诉 Doctrine 忽略 Memcached?

php - Mustache (PHP) 输出关联数组键

Magento - 从 cms 静态 block 的 block_id 中获取其标题?

magento - 难以禁用 magento 扩展

c# - Magento 1.4 产品标识符类型

php - 太多查询,php。创建精简版论坛引擎

php - 如何使用 PHP 将当前日期时间放入 MySQL

javascript - 将格式输入类型 ='date' 从 mm-dd-yyyy 更改为 dd-mm-yyyy Laravel

Magento 2 在 Js 和 CSS 中的变化

image - 迁移magento网站后未显示产品图片