Администратор Magento не будет загружаться при выполнении другого действия - PullRequest
0 голосов
/ 09 июня 2011

У меня есть свой собственный контроллер в Magento, что было сделано, следуя инструкциям здесь: http://alanstorm.com/magento_admin_controllers

Мой контроллер расширяет Mage_Adminhtml_Controller_Action и внутри есть метод:

public function myAction() {
    sleep(1000);
    die('I am done');
}

Когда этот метод работает, я не могу загрузить другие страницы администратора Magento. Они будут загружены в конце концов сразу после завершения описанного выше метода. Также Frontend работает отлично, выполнение того же действия с контроллера Frontend не приводит к зависанию Magento следующим образом.

Есть ли какие-либо решения для сохранения моего метода в Admin, и пока этот метод работает, остальные администраторы должны оставаться пригодными для использования? Дольше всего этот процесс занимает около 4-5 часов, и он импортирует продукты. Да, у меня также есть cron, но я хотел бы также предоставить пользователю возможность инициировать процессы по желанию.

Ответы [ 2 ]

0 голосов
/ 09 июня 2011

Должен ответить сам:

Решение очень простое:

вызовите это прямо перед долгим процессом (убедитесь, что вы выполнили манипулирование данными сеанса перед вызовом этого метода, в противном случае могут возникнуть ошибки)

session_write_close();

И вуаля, вы можете запустить несколько процессов одновременно!

0 голосов
/ 09 июня 2011

Это особенность.

Обходной путь - использовать два браузера, например, Firefox + Chrome, Firefox + Opera и т. Д.

Лучше работать с двумя браузерами над этими задачами, поскольку вы не хотите, чтобы сбой в других ваших вкладках прерывал импорт.

Я знаю, что это не исчерпывающий ответ на программирование, но иногда и боковое решение работает.

...