Envoi mail() php simultanément

rockclimber Messages postés 16 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 23 septembre 2005 - 8 juin 2005 à 09:10
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 9 juin 2005 à 12:53
Je m'explique : Plusieurs clients sur mon site font une action qui engendre un envoi de mail simultané.

Seulement, un seul mail est généré !

Comment faire, j'ai éssayé de gérer ça avec les X-priority dans le Header...Rien !

Merci d'avance de votre aide.

13 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 juin 2005 à 09:47
Hello,



il faudrait voir ton code.
0
rockclimber Messages postés 16 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 23 septembre 2005
8 juin 2005 à 09:53
$fp = fopen("donnee/priorite.txt","r+");//fichier contenant un chiffre compris entre 1 et 3

$priorite = fgets($fp,2);

switch ($priorite) {

case "1":

$priorite = "2";

break;

case "2":

$priorite = "3";

break;

case "3":

$priorite = "1";

break;

}

fseek($fp,0);


fputs($fp,$priorite);

fclose($fp);


$entetes = "From: contact@install.fr\n"."X-Priority: ".$priorite."\n\r";

$message.="Priorite = ".$priorite;

mail($destinataire, $sujet, $message, $entetes);
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 juin 2005 à 10:20
Ok, mais en quoi c'est cense generer plusieurs mails ?
0
rockclimber Messages postés 16 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 23 septembre 2005
8 juin 2005 à 10:30
Il y a simplement concurrence d'accès à la ressource de la fonction
mail(), lorsque plusieurs client font la même action en même temps.

Donc j'essaye de créer une pseudo liste d'attente, ou de faire un while (mail()){}

Mais rien a faire.

Me comprends tu ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 juin 2005 à 10:44
Je crois lol...
mais ce n'est pas plutot parce que tu utilises le meme fichier pour tout le monde, pour tes priorites ?
0
rockclimber Messages postés 16 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 23 septembre 2005
8 juin 2005 à 11:03
Etant donné que la fonction mail ne gere pas la concurence d'accès, je me suis dis que le fgets le faisais.

Ce qui a l'air d'ètre le cas. Mais mon réel probleme est de créer un liste d'attentes de mail en php sans

me servir d'un logiciel externe tels Outlook.



Est-ce possible ?
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 juin 2005 à 11:12
Hmm...la solution est peut-etre dans ce cas de creer un fichier avec les mails a envoyer, et les deplacer dans ce fichier selon leur priorite (c'est ta liste d'attente). Puis php verifie ce fichier et envoie les mails dans l'ordre. Le probleme est qu'on ne fait pas de multithreading en php...
Donc un client arrive, actionne le mail...
Un deuxieme fait la meme chose (en meme temps, pas de bol...).
J'ai du mal a croire que tu doives gerer les priorites et une liste d'attente, perso je n'ai jamais eu de probleme meme dans un environnement professionnel.

Mais tu peux imaginer, quand ton client arrive, ecrire dans un fichier (en ajout) une ligne le concernant, indiquant qu'un mail doit etre envoye. Puis lire ce fichier, et envoyer tous les mails s'y trouvant, puis les effacer du fichier...

Ceci dit...je ne pense pas que ca resolve vraiment ton probleme.
0
rockclimber Messages postés 16 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 23 septembre 2005
8 juin 2005 à 11:44
Cela peut résoudre mon problème, mais ce qui m'inquiete c'est que dans
un environement professionnel, comme par un exemple le site marchand
ldlc, comment font

ils pour résoudre les accès concurents lors de l'envoi de mail ? Car
dans mon entreprise on fait le test en local de l'envoi de mail en même
temps (pas de bol...) et ça plante.

C'est quand même fou que le php ne gere pas cela. LA Solution, je pense
et que mon script php se connecte à Outlook, et insere le mail dans la
boite d'envoi qui elle ! gere une liste d'attente !
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 juin 2005 à 11:49
Ce qui m'intrigue moi c'est que je travaille sur un site commercial, qu'il y a evidemment des envois de mail, et qu'on a pas ce probleme. Du tout. Sans rien faire de particulier, en plus.

J'aimerais assez voir l'action en question, et tout le fil jusqu'a l'envoi du mail en fait.
0
rockclimber Messages postés 16 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 23 septembre 2005
8 juin 2005 à 12:03
Moi aussi je travaille sur un site de commerce, et donc lorsque deux clients execute en même temps (à la seconde près !),

un script PHP qui comprend la fonction mail(), cela plante. Donc pour
tester tu fais un script bidon d'envoi de mail qui s'execute

sur l'appui d'un bouton par exemple. Tu appel un collegue et tu lui dis
à trois (3) on appuie...1,2,3 pb!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Le mail doit ètre envoyé a deux adresses différentes, tu fais réference
a un $_Session['mail'] du client par exemple qui est différente

de celle de ton collegue. Putain je suis pas le seul en France qui rencontre ce pb !!!
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
8 juin 2005 à 12:04
Salut,



pourquoi ne pas passer par MySQL dans ce cas ?



Tu fais une liste d'attente via MySQL et ensuite t'envoie le mail (attention aux ressources consommées par contre).

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
perig Messages postés 358 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 5 septembre 2006
9 juin 2005 à 08:23
Je pense justement que MySQL est la solution !!!
Les grands sites marchand utilisent un Cron pour lancer une tache la nuit quand il n'y a personne sur le site (lenvoi de mail mar exemple).

---Perig---
Pour vous servir
Et parfois en galère
Souvent même
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
9 juin 2005 à 12:53
C'est aussi une bonne solution. MySQL gère les concurrences donc tu
peux aussi l'utiliser dans ce cas, pour faire un système qui envoie le
mail en fonction d'une requête, etc...



Bref je te laisse réfléchir

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
Rejoignez-nous