Jump to content

Lenteur page liste module en backoffice après upgrade


Recommended Posts

Bonjour,

 

Je viens d'upgrader mon prestashop version 1.5.4.1 vers la version 1.6.0.14.

J'ai utilisé la méthode de mise à jour automatique.

 

Après cela, je me retrouve avec la page liste des modules très lent à accéder. 1mn à 4mn d'attente avant que la page se charge.

 

Voici les actions que j'ai effectué pour essayer de fixer cela, mais sans succès :

  • Administration > Préférences > Mettre "Vérifier automatiquement les mises à jour de modules" à NON
  • Dossier \config\xml : Suppression de tous les fichiers XML
  • Désactivation du module navigation à facette vu que ce module est aussi tres lent
  • Désactivation du module Expertise PrestaShop (Car ralentit parfois l'admin)

Est-ce-que quelqu'un a déjà rencontré ce problème et l'a résolu?

 

Merci d'avance pour vos réponses.

Edited by Xanaxilovsky (see edit history)
Link to comment
Share on other sites

J'ai réussi à résoudre le problème en désactivant la recherche de mise à jour via le code.
 
D'abord, Overrider la classe \controllers\admin\AdminModulesController.php, puis redéfinir la méthode initContent()
Puis, commenter ou supprimer les codes qui se trouvent en dessous de ces commentaires :
  • // Upgrade Module process, init check if a module could be upgraded
  • // Module can't be upgraded if not file exist but can change the database version...

Remplacer aussi 

return parent::initContent();

 par

 return AdminController::initContent();

Voici le code complet

class AdminModulesController extends AdminModulesControllerCore
{
	public function initContent()
	{
		if (Tools::isSubmit('addnewmodule') && $this->context->mode == Context::MODE_HOST)
		{
			$this->display = 'add';
			$this->context->smarty->assign(array('iso_code' => $this->context->language->iso_code));
			return AdminController::initContent();
		}

		$this->meta_title = 'Modules';

		// If we are on a module configuration, no need to load all modules
		if (Tools::getValue('configure') != '')
			return true;

		$this->initToolbar();
		$this->initPageHeaderToolbar();

		// Init
		$smarty = $this->context->smarty;
		$autocomplete_list = 'var moduleList = [';
		$category_filtered = array();
		$filter_categories = explode('|', Configuration::get('PS_SHOW_CAT_MODULES_'.(int)$this->id_employee));
		if (count($filter_categories) > 0)
			foreach ($filter_categories as $fc)
				if (!empty($fc))
					$category_filtered[$fc] = 1;

		if (empty($category_filtered) && Tools::getValue('tab_module'))
			$category_filtered[Tools::getValue('tab_module')] = 1;

		foreach ($this->list_modules_categories as $k => $v)
			$this->list_modules_categories[$k]['nb'] = 0;

		// Retrieve Modules Preferences
		$modules_preferences = '';
		$tab_modules_preferences = array();
		$modules_preferences_tmp = Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'module_preference` WHERE `id_employee` = '.(int)$this->id_employee);
		$tab_modules_preferences_tmp = Db::getInstance()->executeS('SELECT * FROM `'._DB_PREFIX_.'tab_module_preference` WHERE `id_employee` = '.(int)$this->id_employee);

		foreach ($tab_modules_preferences_tmp as $i => $j)
			$tab_modules_preferences[$j['module']][] = $j['id_tab'];

		foreach ($modules_preferences_tmp as $k => $v)
		{
			if ($v['interest'] == null)
				unset($v['interest']);
			if ($v['favorite'] == null)
				unset($v['favorite']);
			$modules_preferences[$v['module']] = $v;
		}

		// Retrieve Modules List
		$modules = Module::getModulesOnDisk(true, $this->logged_on_addons, $this->id_employee);
		$this->initModulesList($modules);
		$this->nb_modules_total = count($modules);
		$module_errors = array();
		$module_success = array();
		$upgrade_available = array();
		$dont_filter = false;

		//Add succes message for one module update
		if (Tools::getValue('updated') && Tools::getValue('module_name'))
		{
			$module_names = (string)Tools::getValue('module_name');
			if (strpos($module_names, '|'))
			{
				$module_names = explode('|', $module_names);
				$dont_filter = true;
			}

			if (!is_array($module_names))
				$module_names = (array)$module_names;

			foreach ($modules as $km => $module)
				if (in_array($module->name, $module_names))
					$module_success[] = array('name' => $module->displayName, 'message' => array(
						0 => sprintf($this->l('Current version: %s'), $module->version)));
		}

		// Browse modules list
		foreach ($modules as $km => $module)
		{
			//if we are in favorites view we only display installed modules
			if (Tools::getValue('select') == 'favorites' && !$module->id)
			{
				unset($modules[$km]);
				continue;
			}

			// Upgrade Module process, init check if a module could be upgraded
			// if (Module::initUpgradeModule($module))
			// {
			// 	// When the XML cache file is up-to-date, the module may not be loaded yet
			// 	if (!class_exists($module->name))
			// 	{
			// 		if (!file_exists(_PS_MODULE_DIR_.$module->name.'/'.$module->name.'.php'))
			// 			continue;
			// 		require_once(_PS_MODULE_DIR_.$module->name.'/'.$module->name.'.php');
			// 	}
			// 	if ($object = new $module->name())
			// 	{
			// 		$object->runUpgradeModule();
			// 		if ((count($errors_module_list = $object->getErrors())))
			// 			$module_errors[] = array('name' => $module->displayName, 'message' => $errors_module_list);
			// 		elseif ((count($conf_module_list = $object->getConfirmations())))
			// 			$module_success[] = array('name' => $module->displayName, 'message' => $conf_module_list);
			// 		unset($object);
			// 	}
			// }
			// // Module can't be upgraded if not file exist but can change the database version...
			// // User has to be prevented
			// elseif (Module::getUpgradeStatus($module->name))
			// {
			// 	// When the XML cache file is up-to-date, the module may not be loaded yet
			// 	if (!class_exists($module->name))
			// 		if (file_exists(_PS_MODULE_DIR_.$module->name.'/'.$module->name.'.php'))
			// 		{
			// 			require_once(_PS_MODULE_DIR_.$module->name.'/'.$module->name.'.php');
			// 			$object = new $module->name();
			// 			$module_success[] = array('name' => $module->name, 'message' => array(
			// 				0 => sprintf($this->l('Current version: %s'), $object->version),
			// 				1 => $this->l('No file upgrades applied (none exist).'))
			// 			);
			// 		}
			// 		else
			// 			continue;
			// 	unset($object);
			// }

			// Make modules stats
			$this->makeModulesStats($module);

			// Assign warnings
			if ($module->active && isset($module->warning) && !empty($module->warning) && !$this->ajax)
			{
				$href = Context::getContext()->link->getAdminLink('AdminModules', true).'&module_name='.$module->name.'&tab_module='.$module->tab.'&configure='.$module->name;
				$this->context->smarty->assign('text', sprintf($this->l('%1$s: %2$s'), $module->displayName, $module->warning));
				$this->context->smarty->assign('module_link', $href);
				$this->displayWarning($this->context->smarty->fetch('controllers/modules/warning_module.tpl'));
			}

			// AutoComplete array
			$autocomplete_list .= Tools::jsonEncode(array(
				'displayName' => (string)$module->displayName,
				'desc' => (string)$module->description,
				'name' => (string)$module->name,
				'author' => (string)$module->author,
				'image' => (isset($module->image) ? (string)$module->image : ''),
				'option' => '',
			)).', ';

			// Apply filter
			if ($this->isModuleFiltered($module) && Tools::getValue('select') != 'favorites')
				unset($modules[$km]);
			else
			{
				if (isset($modules_preferences[$modules[$km]->name]))
					$modules[$km]->preferences = $modules_preferences[$modules[$km]->name];

				$this->fillModuleData($module, 'array');
				$module->categoryName = (isset($this->list_modules_categories[$module->tab]['name']) ? $this->list_modules_categories[$module->tab]['name'] : $this->list_modules_categories['others']['name']);
			}
			unset($object);
			if ($module->installed && isset($module->version_addons) && $module->version_addons)
				$upgrade_available[] = array('anchor' => ucfirst($module->name), 'name' => $module->name, 'displayName' => $module->displayName);

			if (in_array($module->name, $this->list_partners_modules))
				$module->type = 'addonsPartner';

			if (isset($module->description_full) && trim($module->description_full) != '')
				$module->show_quick_view = true;
		}

		// Don't display categories without modules
		$cleaned_list = array();
		foreach ($this->list_modules_categories as $k => $list)
			if ($list['nb'] > 0)
				$cleaned_list[$k] = $list;

		// Actually used for the report of the upgraded errors
		if (count($module_errors))
		{
			$html = $this->generateHtmlMessage($module_errors);
			$this->errors[] = sprintf(Tools::displayError('The following module(s) were not upgraded successfully: %s'), $html);
		}
		if (count($module_success))
		{
			$html = $this->generateHtmlMessage($module_success);
			$this->confirmations[] = sprintf($this->l('The following module(s) were upgraded successfully:').' %s', $html);
		}

		ConfigurationKPI::updateValue('UPDATE_MODULES', count($upgrade_available));

		if (count($upgrade_available) == 0 && (int)Tools::getValue('check') == 1)
			$this->confirmations[] = $this->l('Everything is up-to-date');

		// Init tpl vars for smarty
		$tpl_vars = array(
			'token' => $this->token,
			'upgrade_available' => $upgrade_available,
			'currentIndex' => self::$currentIndex,
			'dirNameCurrentIndex' => dirname(self::$currentIndex),
			'ajaxCurrentIndex' => str_replace('index', 'ajax-tab', self::$currentIndex),
			'autocompleteList' => rtrim($autocomplete_list, ' ,').'];',
			'showTypeModules' => $this->filter_configuration['PS_SHOW_TYPE_MODULES_'.(int)$this->id_employee],
			'showCountryModules' => $this->filter_configuration['PS_SHOW_COUNTRY_MODULES_'.(int)$this->id_employee],
			'showInstalledModules' => $this->filter_configuration['PS_SHOW_INSTALLED_MODULES_'.(int)$this->id_employee],
			'showEnabledModules' => $this->filter_configuration['PS_SHOW_ENABLED_MODULES_'.(int)$this->id_employee],
			'nameCountryDefault' => Country::getNameById($this->context->language->id, Configuration::get('PS_COUNTRY_DEFAULT')),
			'isoCountryDefault' => $this->iso_default_country,
			'categoryFiltered' => $category_filtered,
			'modules' => $modules,
			'nb_modules' => $this->nb_modules_total,
			'nb_modules_favorites' => count($this->context->employee->favoriteModulesList()),
			'nb_modules_installed' => $this->nb_modules_installed,
			'nb_modules_uninstalled' => $this->nb_modules_total - $this->nb_modules_installed,
			'nb_modules_activated' => $this->nb_modules_activated,
			'nb_modules_unactivated' => $this->nb_modules_installed - $this->nb_modules_activated,
			'list_modules_categories' => $cleaned_list,
			'list_modules_authors' => $this->modules_authors,
			'add_permission' => $this->tabAccess['add'],
			'tab_modules_preferences' => $tab_modules_preferences,
			'kpis' => $this->renderKpis(),
			'module_name' => Tools::getValue('module_name'),
			'page_header_toolbar_title' => $this->page_header_toolbar_title,
			'page_header_toolbar_btn' => $this->page_header_toolbar_btn,
			'modules_uri' => __PS_BASE_URI__.basename(_PS_MODULE_DIR_),
			'dont_filter' => $dont_filter,
			'is_contributor' => (int)$this->context->cookie->is_contributor
		);

		if ($this->logged_on_addons)
		{
			$tpl_vars['logged_on_addons'] = 1;
			$tpl_vars['username_addons'] = $this->context->cookie->username_addons;
		}
		$smarty->assign($tpl_vars);
	}
}

 

La suppression des modules qui ne sont plus utilisés et des modules sauvegardés comme "paypal_old, blocktopmenu12122013, ..." ont aussi permis d'accélerer le chargement de la page.
Link to comment
Share on other sites

  • 1 year later...

Bonjour,

 

J'ai un problème qui est à mon avis assez similaire mais j'arrive pas à le résoudre malgré les indices laissés ici. Suite à la mise à jour de mes modules, la page BO de modules ne s'affiche plus. Je me retrouve avec une erreur MySQL Server has gone away.

 

En fouillant dans la page d'erreur je tombe sur: 

 

ConfigurationKPICore::updateValue - [line 1478 - controllers/admin/AdminModulesController.php] :

1472. 		{
1473. 			$html = $this->generateHtmlMessage($module_success);
1474. 			$this->confirmations[] = sprintf($this->l('The following module(s) were upgraded successfully:').' %s', $html);
1475. 		}
1476. 
1477. 		ConfigurationKPI::updateValue('UPDATE_MODULES', count($upgrade_available));
1478. 
1479. 		if (count($upgrade_available) == 0 && (int)Tools::getValue('check') == 1)
1480. 			$this->confirmations[] = $this->l('Everything is up-to-date');
1481. 
1482. 		// Init tpl vars for smarty

Une idée pour m'aider à trouver une solution?

 

Merci beaucoup!!!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...