erreur base de données lors de l'envoi [Réglé]
Shadow Membre non connecté
Booster Fusée
-
Booster Fusée
- Voir le profil du membre Shadow
- Inscrit le : 30/12/2007
- Site internet
J'ai envoyé ma première newsletter aujourd'hui à 406 inscrits. Je l'ai laissé travailler et quand je suis revenue sur la page, il y avait l'erreur suivante :
Erreur fatale: Requête count invalide
SELECT COUNT(*) AS total FROM phpboost_newsletter
Lost connection to MySQL server during query
Ligne 106 : newsletter.class.php
La ligne 106 contient le code suivant :
[code=php]$nbr = parent::count_table('newsletter', __LINE__, __FILE__);[/code]
Je pense que les messages sont bien partis car j'ai reçu des messages de type failure notice pour les mauvaises adresses mais comme je ne reçois rien pour les adresses valides, je ne peux pas savoir si les 406 messages ont bien été envoyés ou si l'erreur est survenue en plein milieu de l'envoi.
Quelqu'un a une idée ?
Merci.
Edit : après vérification, ma newsletter n'a pas été enregistrée dans la table.
Édité par Shadow Le 01/05/2008 à 18h11
Shadow
"Quand tu ranges chez toi, ça fout le bordel chez ton voisin". - Règle d'entropie générale adaptée aux usages domestiques.
"Quand tu ranges chez toi, ça fout le bordel chez ton voisin". - Règle d'entropie générale adaptée aux usages domestiques.
CrowkaiT Membre non connecté
-
Modérateur
- Voir le profil du membre CrowkaiT
- Inscrit le : 17/06/2005
- Site internet
- Groupes :
-
Equipe Historique
Essaye de la renvoyer
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!
Shadow Membre non connecté
Booster Fusée
-
Booster Fusée
- Voir le profil du membre Shadow
- Inscrit le : 30/12/2007
- Site internet
Edit : par sécurité, j'ai refais un essai (avec un mot d'excuses), sur 390 abonnés cette fois puisque j'ai supprimé les adresses non valides et j'ai exactement la même erreur. Je sais que chez mon hébergeur, il y a une durée limite pour les requêtes SQL mais je ne pensais pas que c'était si court, je vais devoir trouver un autre moyen d'envoyer mes newsletter...
Edit2 : Sur la base de connaissance de mon hébergeur, ils indiquent que les mails que l'on envoie en php doit impérativement utiliser un code de ce type pour fonctionner :
[code=php]< ?php
$to = 'personne@example.com';
$subject = 'le sujet';
$message = 'Bonjour !';
$headers = 'From: webmaster@example.com';
mail($to, $subject, $message, $headers);
? >[/code]
Peut-on me confirmer que c'est le cas pour PHPBoost ? Merci. (je ne remets pas en cause le développement de PHPboost, c'est juste pour avoir des billes quand je vais contacter le support de mon hébergeur).
Édité par Shadow Le 02/05/2008 à 12h56
Shadow
"Quand tu ranges chez toi, ça fout le bordel chez ton voisin". - Règle d'entropie générale adaptée aux usages domestiques.
"Quand tu ranges chez toi, ça fout le bordel chez ton voisin". - Règle d'entropie générale adaptée aux usages domestiques.
CrowkaiT Membre non connecté
-
Modérateur
- Voir le profil du membre CrowkaiT
- Inscrit le : 17/06/2005
- Site internet
- Groupes :
-
Equipe Historique
La newsletter doit partir, mais il y a peut-être un problème dans la durée de connexion à mysql..
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!
Shadow Membre non connecté
Booster Fusée
-
Booster Fusée
- Voir le profil du membre Shadow
- Inscrit le : 30/12/2007
- Site internet
En farfouillant sur le forum de mon hébergeur, j'ai trouvé un élément de réponse concernant l'erreur que j'obtiens (Lost connection to MySQL server during query) :
Citation :
Cette erreur indique en général qu'une connexion a été inactive trop longtemps. Si une connexion reste ouverte au serveur MySQL sans générer de requêtes pendant une dizaine ou quinzaine de secondes, le serveur MySQL la ferme. En principe une connexion ne doit en effet pas durer, le script est censé l'ouvrir, exécuter les requêtes, et la fermer. Si par exemple pendant l'upload d'un fichier cette erreur se produit, cela signifie que le script ouvre une connexion, attend la fin de l'upload, puis exécute une requête. Alors qu'il devrait attendre la fin de l'upload, ouvrir une connexion, et exécuter la requête.
Malheureusement, je ne comprends pas grand-chose à cette explication. J'ai interrogé le support de mon hébergeur mais en attendant, si un développeur pouvait m'expliquer ce truc comme si j'avais deux ans...
Merci.
Autre chose, j'ai aussi trouvé ça sur leur base de connaissance :
Citation :
Afin d'être totalement compatible avec le monde Unix, vous devez utiliser de préférence le caractère séparateur n pour séparer vos entêtes. Le caractère rn risque de poser problème si le serveur de mails qui héberge l'adresse du destinataire est un serveur Unix/Linux.
Or, en regardant dans le fichier newsletter.class.php, je constate que PHPBoost utilise les /r/n mais je ne sais pas si ça peut avoir un rapport avec mon problème.
Merci.
Edit : j'ai oublié de préciser que j'utilise la newsletter en bbcode.
Édité par Shadow Le 04/05/2008 à 12h25
Shadow
"Quand tu ranges chez toi, ça fout le bordel chez ton voisin". - Règle d'entropie générale adaptée aux usages domestiques.
"Quand tu ranges chez toi, ça fout le bordel chez ton voisin". - Règle d'entropie générale adaptée aux usages domestiques.
Shadow Membre non connecté
Booster Fusée
-
Booster Fusée
- Voir le profil du membre Shadow
- Inscrit le : 30/12/2007
- Site internet
J'ai eu une réponse de mon hébergeur qui pense que le problème peut venir du nombre d'abonnés (à peine 400, pfff) et qui me propose d'essayer leur système SMTP de masse. Le truc c'est que ça nécessite un programme PHP pouvant utiliser un SMTP distant avec authentification, est-ce le cas de PHPBoost ? Si oui, comment je fais ça ?
Sinon, je pense me tourner vers un système de type wanewsletter.
Merci.
Shadow
"Quand tu ranges chez toi, ça fout le bordel chez ton voisin". - Règle d'entropie générale adaptée aux usages domestiques.
"Quand tu ranges chez toi, ça fout le bordel chez ton voisin". - Règle d'entropie générale adaptée aux usages domestiques.
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
On pourrait d'ailleurs le faire, mais je ne sais pas vraiment comment ça marche.
Tu peux essayer d'autres systèmes de newsletter, on verra ce qu'on pourra faire.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
CrowkaiT Membre non connecté
-
Modérateur
- Voir le profil du membre CrowkaiT
- Inscrit le : 17/06/2005
- Site internet
- Groupes :
-
Equipe Historique
Dans l'avenir on développera un système d'envoi de mail par sockets, mais problème... il faut que le serveur le supporte..
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!
Shadow Membre non connecté
Booster Fusée
-
Booster Fusée
- Voir le profil du membre Shadow
- Inscrit le : 30/12/2007
- Site internet
CrowkaiT :
Il faudrait déplacer la requête sur la base de données avant l'envoi de la newsletter, ainsi la connexion sera fermée avant et tu n'aura plus de problème. Je n'ai pas le fichier sous les yeux, ben.popeye t'expliquera comment faire.
Ah ben, ce serait super, donc j'attends un peu avant de me lancer dans un système externe. Merci beaucoup.
Shadow
"Quand tu ranges chez toi, ça fout le bordel chez ton voisin". - Règle d'entropie générale adaptée aux usages domestiques.
"Quand tu ranges chez toi, ça fout le bordel chez ton voisin". - Règle d'entropie générale adaptée aux usages domestiques.
Shadow Membre non connecté
Booster Fusée
-
Booster Fusée
- Voir le profil du membre Shadow
- Inscrit le : 30/12/2007
- Site internet
Je ne voudrais pas avoir l'air d'insister mais est-ce que Ben.popeye serait revenu de vacances et pourrait se pencher sur mon problème ?
Merci.
Shadow
"Quand tu ranges chez toi, ça fout le bordel chez ton voisin". - Règle d'entropie générale adaptée aux usages domestiques.
"Quand tu ranges chez toi, ça fout le bordel chez ton voisin". - Règle d'entropie générale adaptée aux usages domestiques.
CrowkaiT Membre non connecté
-
Modérateur
- Voir le profil du membre CrowkaiT
- Inscrit le : 17/06/2005
- Site internet
- Groupes :
-
Equipe Historique
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!
Shadow Membre non connecté
Booster Fusée
-
Booster Fusée
- Voir le profil du membre Shadow
- Inscrit le : 30/12/2007
- Site internet
CrowkaiT :
Je rentre ce soir chez moi je te donnerai la modification à faire. 

Merci beaucoup, c'est très gentil. J'envoie ma newsletter chaque premier du mois mais comme je dois prévenir du changement prochain d'hébergeur, ça me permettrait de faire un test d'envoi avant la newsletter de juin.
Shadow
"Quand tu ranges chez toi, ça fout le bordel chez ton voisin". - Règle d'entropie générale adaptée aux usages domestiques.
"Quand tu ranges chez toi, ça fout le bordel chez ton voisin". - Règle d'entropie générale adaptée aux usages domestiques.
Shadow Membre non connecté
Booster Fusée
-
Booster Fusée
- Voir le profil du membre Shadow
- Inscrit le : 30/12/2007
- Site internet
J'aimerais bien pouvoir faire un essai avec cette modification alors si quelqu'un pouvait penser à moi (ou me dire que c'est pas possible, je comprendrais). Promis, après je vous fiche la paix.
Shadow
"Quand tu ranges chez toi, ça fout le bordel chez ton voisin". - Règle d'entropie générale adaptée aux usages domestiques.
"Quand tu ranges chez toi, ça fout le bordel chez ton voisin". - Règle d'entropie générale adaptée aux usages domestiques.
CrowkaiT Membre non connecté
-
Modérateur
- Voir le profil du membre CrowkaiT
- Inscrit le : 17/06/2005
- Site internet
- Groupes :
-
Equipe Historique
Remplace dans newsletter.class.php ligne 57
Code PHP :
$result = parent::query_while("SELECT id, mail FROM ".PREFIX."newsletter ORDER BY id", __LINE__, __FILE__); while( $row = parent::sql_fetch_assoc($result) ) { if( !@mail($row['mail'], $mail_object, str_replace('[UNSUBSCRIBE_LINK]', ' <a href="' . HOST . DIR . '/newsletter/newsletter.php?id=' . $row['id'] . '">' . $LANG['newsletter_unscubscribe_text'] . '</a> ', $message), $headers) ) $error_mailing_list[] = $row['mail']; } $nbr = parent::count_table('newsletter', __LINE__, __FILE__); //On enregistre dans les archives la newsletter envoyée parent::query_inject("INSERT INTO ".PREFIX."newsletter_arch (title,message,timestamp,type,nbr) VALUES('" . $mail_object . "','" . addslashes($message) . "', '" . time() . "', 'html', '" . $nbr . "')", __LINE__, __FILE__);
Par
Code PHP :
$nbr = parent::count_table('newsletter', __LINE__, __FILE__); //On enregistre dans les archives la newsletter envoyée parent::query_inject("INSERT INTO ".PREFIX."newsletter_arch (title,message,timestamp,type,nbr) VALUES('" . $mail_object . "','" . addslashes($message) . "', '" . time() . "', 'html', '" . $nbr . "')", __LINE__, __FILE__); $result = parent::query_while("SELECT id, mail FROM ".PREFIX."newsletter ORDER BY id", __LINE__, __FILE__); while( $row = parent::sql_fetch_assoc($result) ) { if( !@mail($row['mail'], $mail_object, str_replace('[UNSUBSCRIBE_LINK]', ' <a href="' . HOST . DIR . '/newsletter/newsletter.php?id=' . $row['id'] . '">' . $LANG['newsletter_unscubscribe_text'] . '</a> ', $message), $headers) ) $error_mailing_list[] = $row['mail']; }
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!
Shadow Membre non connecté
Booster Fusée
-
Booster Fusée
- Voir le profil du membre Shadow
- Inscrit le : 30/12/2007
- Site internet
Merci beaucoup de votre aide en tout cas.
Shadow
"Quand tu ranges chez toi, ça fout le bordel chez ton voisin". - Règle d'entropie générale adaptée aux usages domestiques.
"Quand tu ranges chez toi, ça fout le bordel chez ton voisin". - Règle d'entropie générale adaptée aux usages domestiques.
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie