tyler06_34 Posted July 1 Share Posted July 1 (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 July 7 by tyler06_34 (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted July 1 Share Posted July 1 Bonjour, dès que la boutique grossie, il est important de mettre en place un nettoyage récurent des données pour éviter ce genre de surcharge. Link to comment Share on other sites More sharing options...
tyler06_34 Posted July 1 Author Share Posted July 1 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) : Rien ne semble réellement critique. Si quelqu'un a une piste je suis preneur. Link to comment Share on other sites More sharing options...
tyler06_34 Posted July 4 Author Share Posted July 4 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 More sharing options...
El Patron Posted July 5 Share Posted July 5 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 More sharing options...
tyler06_34 Posted July 7 Author Share Posted July 7 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now