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