Page 1 sur 1

Temporiser avant l'envoi avec mail()

Posté : 31 oct. 2005, 15:32
par gesualda
Bonjour à tous

Lors du déclanchement de l'envoi du mail avec la fonction mail(), la page est comme figé, pendant 2 à 3 secondes au moment de l'envoi

Y a t-il une raison à cela.?

Merci :oops:

Posté : 31 oct. 2005, 15:37
par Vaedan
Peut etre que l'envois du mail ne se fait pas et provoque une erreur, justifiant ainsi le temps de retard :)

Posté : 31 oct. 2005, 15:37
par Vaedan
Une solution serait d'envoyer l'email, puis de rediriger vers la page.

Posté : 31 oct. 2005, 15:45
par gesualda
NOn, en fait ca fait un effet de temporisation, le mail part bien, et arrive à destination.

Ne peut ton pas faire un genre d'enregistrement dans une variable temporaire et l'envoi ensuite :oops:

Posté : 31 oct. 2005, 15:47
par Vaedan
Peut etre que je vais dire une bétise mais tu pourrais afficher ta page COMPLETEMENT, l'envoyer, puis envoyer le mail. Un peu confus ... d'où l''exemple ci-dessous ;)
<!DOCTYPE ...
...
</html>
<?php

flush();

mail( ... );

?>

Posté : 31 oct. 2005, 15:50
par gesualda
C'est quoi la fonction
 flush();

Posté : 31 oct. 2005, 15:51
par Vaedan

Posté : 31 oct. 2005, 15:56
par gesualda
Je vais voir regarder de plus près et je reviens .

Merci :)

Posté : 31 oct. 2005, 16:32
par Ripat
Peut etre que je vais dire une bétise mais tu pourrais afficher ta page COMPLETEMENT, l'envoyer, puis envoyer le mail. Un peu confus ... d'où l''exemple ci-dessous ;)
<!DOCTYPE ...
...
</html>
<?php

flush();

mail( ... );

?>
Ca ne marchera pas.

Le flush seul ne renvoie pas de 200 OK. La page restera en suspens jusqu'à la fin du script. J'ai été confronté à ce problème il n'y a pas longtemps.

Le mieux est de trouver la raison de la lenteur de la fonction mail (librairie PEAR ?).

S'il n'y a pas de solution de ce côté, faire tourner la partie php en background comme ceci:
// envoi d'un header OK
header("HTTP/1.1 200 OK"); 
header("Content-Length: 0");
flush();

// partie de code pour l'envoi du mail
// attention! Il n'y aura plus d'affichage sur le poste client à partir de ce point
Autre solution (linux) et détail de mes recherches:
http://www.phpfrance.com/forums/voir_su ... texte-.php

Dernière mise en garde: cet artifice rend un site plus réactif mais ne solutionne rien du côté serveur!