Jump to content

Page Client du BO beaucoup trop lente ou inaccessible ou en erreur 500.


Coeur_De_Lion

Recommended Posts

Problème à résoudre : Page Client du backoffice beaucoup trop lente ou inaccessible ou en erreur 500.

Bonjour, j'ai discuté de ce problème avec une personne travaillant pour Prestashop, le problème est connu, il finissait même mes questions, comme quoi ... il savait très bien de quoi je parlais et la question qu'il m'a été posé est la suivante :

" Pourquoi vos clients commandent autant ?? "

Non, cette question n'a pas été donnée avec humour.

Et revoila quoi. ^^

J'ai maintenant des clients qui ont plus de 500 commandes sur leur compte et lorsque je sélectionne un de ces clients dans le menu Clients -> Clients du BO, il faut au minimum 45 secondes pour ouvrir la page des clients qui ont 250 commandes et une belle page d'erreur 500 pour ceux qui ont 500 commandes. Je n'ai pas testé à quelle quantité de commandes les erreurs commences mais je pense que c'est lié au temps passé pour la requête.

Si seulement la page client comportait seulement les infos de base du clients et un simple menu pour avoir accès à sa page Commandes, Paniers, Messages, Derniers Mails, Bons de réduction, Adresses... Une bonne partie du problème serait résolut.
Mais non cette page client fait appelle à la totalité des commandes du client, à la totalité des paniers clients utilisés ou pas, à la totalité des .... Enfin bon vous avez compris.

J'ai fait appel à un modeur il y a quelques temps qui m'a dit "pas de soucis, je peux faire le nécessaires".
Il m'a fait un module qui fait le menu en question mais... qu'en apparence seulement... la page charge quand même toutes les informations et donc ... inutile. Il se reconnaitra, après plusieurs demandent il devait faire le nécessaire mais toujours occupé par d'autres clients et au final il ne m'a jamais recontacté. J'ai donc payé un module pour rien mais j'ai espoir qu'un jour il me recontactera afin d'éviter une mauvaise pub (?) Oui je sais, petit message personnel.

Enfin bon, si quelqu'un à une solution, je suis preneur.

Merci d'avance.

Link to comment
Share on other sites

^^ j'ai essayé la version PhenixSuite mais malheureusement certains module, que j'utilise pour ce site, ne sont pas compatibles.

Si vous savez dans quel fichier se trouve le SELECT par défaut pour le visuel des commandes de l'onglet Commandes, je suis preneur. Le tout est de pouvoir LIMIT une 100ene de commandes ce qui devrait, je pense, donner plus de rapidité et en même temps suffisamment de commandes pour gérer le jour même les préparations et faire les recherches de commandes.

 

Link to comment
Share on other sites

il y a 1 minute, Coeur_De_Lion a dit :

^^ j'ai essayé la version PhenixSuite mais malheureusement certains module, que j'utilise pour ce site, ne sont pas compatibles.

Si vous savez dans quel fichier se trouve le SELECT par défaut pour le visuel des commandes de l'onglet Commandes, je suis preneur. Le tout est de pouvoir LIMIT une 100ene de commandes ce qui devrait, je pense, donner plus de rapidité et en même temps suffisamment de commandes pour gérer le jour même les préparations et faire les recherches de commandes.

 

Vos plus anciennes commandes datent de longtemps ?

Link to comment
Share on other sites

il y a 27 minutes, Coeur_De_Lion a dit :

^^ j'ai essayé la version PhenixSuite mais malheureusement certains module, que j'utilise pour ce site, ne sont pas compatibles.

Si vous savez dans quel fichier se trouve le SELECT par défaut pour le visuel des commandes de l'onglet Commandes, je suis preneur. Le tout est de pouvoir LIMIT une 100ene de commandes ce qui devrait, je pense, donner plus de rapidité et en même temps suffisamment de commandes pour gérer le jour même les préparations et faire les recherches de commandes.

 

Juste pour info, vous avez la liste des modules non-compatibles ?

Pour les fonctions, c'est dans l'AdminCustomerController:

$customer->getBoughtProducts();

Cart::getCustomerCarts($customer->id);

$customer->getLastConnections();

Referrer::getReferrers($customer->id);

et ce truc qui ne sert vraiment à rien: 

        $sql = 'SELECT DISTINCT cp.id_product, c.id_cart, c.id_shop, cp.id_shop AS cp_id_shop
				FROM '._DB_PREFIX_.'cart_product cp
				JOIN '._DB_PREFIX_.'cart c ON (c.id_cart = cp.id_cart)
				JOIN '._DB_PREFIX_.'product p ON (cp.id_product = p.id_product)
				WHERE c.id_customer = '.(int)$customer->id.'
					AND NOT EXISTS (
							SELECT 1
							FROM '._DB_PREFIX_.'orders o
							JOIN '._DB_PREFIX_.'order_detail od ON (o.id_order = od.id_order)
							WHERE product_id = cp.id_product AND o.valid = 1 AND o.id_customer = '.(int)$customer->id.'
						)';
        $interested = Db::getInstance()->executeS($sql);
        $interested = array_slice($interested,0,50);
        $total_interested = count($interested);
        for ($i = 0; $i < $total_interested; $i++) {
            $product = new Product($interested[$i]['id_product'], false, $this->default_form_language, $interested[$i]['id_shop']);
            if (!Validate::isLoadedObject($product)) {
                continue;
            }
            $interested[$i]['url'] = $this->context->link->getProductLink(
                $product->id,
                $product->link_rewrite,
                Category::getLinkRewrite($product->id_category_default, $this->default_form_language),
                null,
                null,
                $interested[$i]['cp_id_shop']
            );
            $interested[$i]['id'] = (int)$product->id;
            $interested[$i]['name'] = Tools::htmlentitiesUTF8($product->name);
        }

 

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...