Какой код выполняется после выполнения профиля потока данных - PullRequest
3 голосов
/ 12 октября 2011

Часто после выполнения профиля импорта потока данных (для продуктов) следующий запрос, который пользователь делает в консоли администратора, будет значительно медленнее, чем обычные запросы. Что странно, похоже, что он привязан к конкретной сессии браузера . Т.е., если вы вошли в консоль администратора в другом браузере, система реагирует.

Какой код или процессы выполняются, что замедляет последующие запросы Magento? Я могу думать о дюжине вещей, которые это могут быть (индексация, cron и т. Д.), Я ищу конкретные области кода, которые связывают это с сессией, и что этот код делает.

1 Ответ

0 голосов
/ 12 октября 2011

Я предполагаю, что в 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);
        }

...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...