par
Ripat » 31 oct. 2005, 16:32
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!
[quote="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 ;)
[php]<!DOCTYPE ...
...
</html>
<?php
flush();
mail( ... );
?>[/php][/quote]
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:
[php]
// 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[/php]
Autre solution (linux) et détail de mes recherches:
http://www.phpfrance.com/forums/voir_sujet-9934-texte-.php
Dernière mise en garde: cet artifice rend un site plus réactif mais ne solutionne rien du côté serveur!