Jump to content

[RESOLU] Menu Paniers via Commandes du BO part en Erreur 500 : Prestashop 1.7.6.0


Recommended Posts

Posted (edited)

Bonjour,

Je suis face à un problème sur mon prestashop 1.7.6.0.

Ma configuration est :

Version du logiciel serveur : Apache

Version de PHP : 7.3.33

Limite de mémoire : 2048M

Temps maximal d'exécution : 1800

Taille max. pour envoi de fichiers : 128M

 

Tout fonctionne correctement sauf dès lors que je tente d'accéder à l'onglets Paniers via le menu Commandes dans le Back Office... A partir de ce moment là, une tâche s'éxécute pendant un gros laps de temps puis je pars en erreur 500.

J'ai rapatrié le site en local pour debug et j'obtiens l'erreur :

[Mon Jun 30 17:55:39.048229 2025] [php7:error] [pid 11228:tid 1852] [client ::1:64553] PHP Fatal error:  Allowed memory size of 1073741824 bytes exhausted (tried to allocate 20480 bytes) in C:\\xampp\\htdocs\\monsite\\classes\\CartRule.php on line 614, referer: https://localhost/monsite/bvyw0vtvldytuvjr/index.php?controller=AdminDashboard&token=bb7603c702da9c2ea6cdea1f4d61394e

J'ai nettoyé en SQL les tables statistiques, les tables de paniers abandonnés non liées à des commandes. Dans la table ps_cart j'ai uniquement 800 lignes.

Je suis donc allé voir ce que m'indique CartRule.php on line 614 et j'ai donc cet appel (en gras la ligne 614) :

    public function getProductRules($id_product_rule_group)
    {
        if (!Validate::isLoadedObject($this) || $this->product_restriction == 0) {
            return array();
        }

        $productRules = array();
        $results = Db::getInstance()->executeS('
        SELECT *
        FROM ' . _DB_PREFIX_ . 'cart_rule_product_rule pr
        LEFT JOIN ' . _DB_PREFIX_ . 'cart_rule_product_rule_value prv ON pr.id_product_rule = prv.id_product_rule
        WHERE pr.id_product_rule_group = ' . (int) $id_product_rule_group);
        foreach ($results as $row) {
            if (!isset($productRules[$row['id_product_rule']])) {
                $productRules[$row['id_product_rule']] = array('type' => $row['type'], 'values' => array());
            }
            $productRules[$row['id_product_rule']]['values'][] = $row['id_item'];
        }

        return $productRules;
    }

 

Avez vous une piste sur laquelle je pourrai investiguer ?

 

Merci beaucoup pour votre aide.


 


 

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

C'est ce que je cherche à faire, mais niveau BD je ne vois pas de table réellement problématique en taille. Avant d'investir dans un module qui pourrait potentiellement ne pas résoudre mon problème. J 'essaie de l'identifier et voir où se site mon problème.

Voici un relevé des tailles des tables les plus lourdes de la BD (je les ai triées par Taille décroissante) :

NettoyageBD.thumb.jpg.c73e0639c007fee7e2d3a3b349ee80c3.jpg

Rien ne semble réellement critique.

Si quelqu'un a une piste je suis preneur.

Link to comment
Share on other sites

Bonjour,

Après pas mal de manipulations, je viens de m'apercevoir que ce sont mes transporteurs qui posent problème. En effet en les supprimant tous, je n'ai plus ces problèmes d'erreur 500 ou accès à l'onglet Paniers depuis le Back Office.

Je cherche davantage comment résoudre.

Si quelqu'un a une idée, je suis preneur.

Link to comment
Share on other sites

Bonjour,

Vous rencontrez une erreur fatale PHP de type « Allowed memory size exhausted » lors de l’ouverture de l’onglet « Paniers » dans le back-office PrestaShop. Cette erreur indique une fuite de mémoire ou une requête incontrôlée dans la classe CartRule.php, plus précisément lors de la récupération des règles produit associées aux règles panier.

Comment corriger/troubleshooter :

  • Vérifier les règles panier pour les références orphelines à des produits ou transporteurs
  • Dans le back office, allez dans : Promotions > Règles panier.
  • Passez en revue chaque règle pour vérifier les « restrictions » qui pourraient être liées à des produits ou transporteurs manquants ou supprimés.
  • Si possible, désactivez temporairement toutes les règles panier, puis testez à nouveau l’onglet Paniers.
  • Si l’erreur disparaît, réactivez-les une par une pour identifier la règle problématique.

Nettoyage de la base de données

  • Utilisez une requête SQL pour vérifier s’il existe des groupes de règles panier ou des valeurs de règles produit faisant référence à des produits ou transporteurs inexistants.
  • Exemple de requête SQL (adaptez le préfixe de vos tables si besoin) :

SELECT pr.*, prv.*
FROM ps_cart_rule_product_rule pr
LEFT JOIN ps_cart_rule_product_rule_value prv ON pr.id_product_rule = prv.id_product_rule
LEFT JOIN ps_product p ON prv.id_item = p.id_product
WHERE pr.type = 'products' AND p.id_product IS NULL
 

J’espère que cela vous aidera.

Link to comment
Share on other sites

Bien vu il s'agissait d'une règle panier surement trop ambitieuse en terme de conditions. En désactivant cette règle, les problèmes ont disparu.

 

Merci beaucoup pour l'aide.

Link to comment
Share on other sites

  • tyler06_34 changed the title to [RESOLU] Menu Paniers via Commandes du BO part en Erreur 500 : Prestashop 1.7.6.0

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