2012-03-28 6 views
0

Ich habe eine seltsame Mail-Problem. Insbesondere habe ich ein Skript, das den Anforderungsheader überprüft, und wenn es mit einer bestimmten Zeichenfolge übereinstimmt, sendet es eine Mail unter Verwendung von mail(). Es ist eine grundlegende Mail, mit den Standard 'zu', 'Betreff', 'Inhalt', 'von' Felder und nichts anderes.PHP Mail Verlangsamung hängt die Seite

Die Mail wird gut gesendet, aber es verursacht die Seite laden für 30+ Sekunden (auch mit mail() außerhalb der generierten HTML), viel zu lange hängen. Ich habe einige Antworten gesehen, die vorschlagen, die Mails in eine db zu schreiben und einen Cron-Job darauf auszuführen, aber das ist in dieser Situation nicht wirklich eine Option.

Grundsätzlich frage ich mich, ob es eine Möglichkeit gibt, ein PHP-Skript (das Laden der Seite) zu erzwingen, ohne mail() abzuschließen oder irgendeine Konfiguration, die ich überprüfen sollte, dass dies so lange dauern könnte.

Antwort

0

Ich hatte ein ähnliches Problem einmal auf einem RHEL 4 Server und fand 2 Lösungen, die funktionierten: mit PEAR-Mail oder mit einem externen SMTP-Server (in meinem Fall gmail). Das Senden eines einfachen Kontaktformulars dauerte 30 bis 50 Sekunden und dauerte weniger als eine Sekunde.

Ich habe nie herausgefunden, was es verursacht ...

0

hatte nie Probleme mit mail(), ich finde es sehr zuverlässig.

  • Das Problem tritt in allen E-Mail oder mit spezifischer Art?
  • Haben Sie versucht, den Code auf einem anderen Server zu testen?
  • Verwenden Sie PHPmailer() von here als Alternative (wenn möglich) mit SMTP. Here ist ein gutes Tutorial.


+0

Die Probleme treten in allen PHP erstellte E-Mails, die 'mail()' Funktion. Das Server-Setup selbst ist "interessant", um es gelinde auszudrücken, und ich wäre nicht überrascht, wenn die Serverbeschränkungen die Ursache für die Verlangsamung sind. Ich zögere, zu viel von dem Server selbst zu überarbeiten, da er in 4-6 Monaten ersetzt wird - es ist mehr eine Frage von "mach das fürs Erste" als alles andere. – SickHippie

0

Als ich ähnliches Problem hatte, wurde es durch das Fehlen von kanonischen Hostnamen verursacht.

Blick auf /var/log/mail.err: Wenn Sie sehen

sendmail [31575]: nicht in der Lage meinen eigenen Domain-Namen (localhost) zu qualifizieren - mit Kurznamen“

dann das ist es

Dann brauchen Sie:

  1. Fügen Sie Ihren Hostnamen /etc/hosts wie: your.ip.address your.host.name
  2. den Hostnamen In /etc/hostname als: your.host.name
  3. Reboot