J'utilise php 5.3 apache 2.2 et la bibliothèque phpmailer pour envoyer des mails en utilisant smtp et le processus est ok. Le problème est que l'envoi d'un email en utilisant smtp prend un certain temps et que pendant ce temps, apache ne traite aucune autre requête.PHP et Apache bloquer pendant que j'envoie un email en utilisant smtp
Répondre
Je suppose que vous voulez dire que l'instance qui gère la demande de courrier électronique prend beaucoup de temps à se terminer - plutôt que de bloquer toutes les instances du serveur Web? Ce dernier devrait jamais se produire à moins qu'il y ait un mutex partagé à travers tout le code PHP (et même alors il seulement affectent les demandes aux pages de PHP - pas au contenu statique).
Pouvez-vous donner une indication de combien de temps cela prend-il réellement?
MTA (agents de transport de courrier) sont tous sur les messages de mise en file d'attente, et hautement optimisé pour le faire - Donc, la suggestion de Frank Farmer est une très mauvaise.
Il serait utile que vous nous donniez un indice sur le système d'exploitation et où se trouve le MTA.
IME, de longs retards peuvent être causés par de mauvaises recherches DNS - utilisez-vous des adresses IP dans vos noms de configuration ou d'adresse IP? Avez-vous un relais intelligent configuré pour le MTA local (ce qui signifie généralement que le courrier sera envoyé mais seulement après une longue pause).
Avez-vous vérifié vos journaux MTA?
C.
effectivement, il prend entre 5 et 15 secondes pour envoyer un mail alors qu'il se connecte au serveur smtp, envoyer les données ... MTA? ... je ne sais pas ... je suis plus récent en php le le serveur est un hébergement partagé linux – Danilo
Statuts MTA pour l'agent de transport de courrier - c'est le démon qui fait tout le routage/la mise en file d'attente des messages. Si votre sur une plate-forme d'hébergement partagé, vous ne serez pas en mesure de déboguer la faute, vous ne pouvez pas le réparer. Se plaindre à votre fournisseur. – symcbean
Mettez en file d'attente et envoyez-le en utilisant un processus d'arrière-plan. –
Si Apache bloque, il peut être mal configuré. Cela ressemble à ceci sur serverfault. – Josh
"Mettre en file d'attente, et l'envoyer en utilisant un processus d'arrière-plan" .... comment puis-je le faire? – Danilo