Wie zum senden von E-Mails mit PHPMailer im hintergrund?
PHPMailers ist zu tun, einen guten job bei Versand von E-Mails von einem gmail-Konto. Aber es nimmt ziemlich wenig Zeit, und die Seite wird nicht angezeigt, die Reaktion, bis die E-Mail gesendet wurde. Alle Möglichkeiten, die Sie zum senden der E-Mail im hintergrund, so dass ich bieten eine bessere user experience für den Benutzer? Danke!
- Cron-oder vielleicht ajax?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Verwendung eines E-Mail-Warteschlange und php exec() ist eine der besten Möglichkeiten.
Es wird ausgelöst, wenn erforderlich (Vermeidung der Verwendung von CRONs), es ist schnell, weil es heißt im hintergrund, und sofortige.
1. E-Mail-Warteschlange.
Nehmen Sie alle Felder in einer Tabelle, MySQL mit einer Einlage, so etwas wie:
Das ist wichtig, weil Sie brauchen, ein Unabhängiger Prozess im hintergrund, also auch es ist eine gute Idee für die Registrierung und überwachung aller ausgehenden E-Mails.
2. PHP exec(). Nach dem einfügen in die MySQL-Zeit ist, zu nennen, die als externe Ausführung:
-q0-
und&> ... /dev/null &
sind erforderlich, um die Ausgabe unterdrücken und nennen als hintergrund-Prozess.3. Gleiche script-Datei index.php oder anderen für die Verarbeitung von anrufen von einer queue:
Diese Weise rufen Sie unsere index.php (Sie können einen anderen Namen-Datei) und Prozess ausgehenden:
Vielleicht haben Sie zu berühren, manche php.ini-Optionen für
exec()
, ist keine große Sache.Einmal alles richtig läuft, bieten Sie eine bessere web-navigation und E-Mail-handling für die schnelle Antwort und keine Wartezeiten.
In einigen Fällen werden Sie pass von warten aus Sie eine direkte E-Mail-2.60 Sekunden queue-exec-hintergrund 0.024 Sekunden, was eine Verbesserung der Geschwindigkeit bis zu 11-mal schneller.
Könnten Sie ein AJAX-request post-Daten an PHP-script, welches dann die E-Mail senden.
Können Sie
exec
zu sagen, die PHP CLI interpreter für die Ausführung des Skripts im hintergrund.wenn Sie auf linux:
wenn Sie auf windows:
Erfordert dies, dass dein server muss PHP-CLI-interpreter installiert und erfordert, dass Sie wissen, den Pfad zur PHP-binary (Fragen Sie Ihren Gastgeber, wenn Sie nicht wissen). Sie müssen auch wissen, den absoluten Pfad zu Ihrem PHP-Skript, die Sie finden können, mit
get_cwd()
.Wenn Sie interessiert sind, senden von E-Mails via PHP async, können Sie einen Blick auf diese Antwort. https://stackoverflow.com/a/22627769/829533
ist es mit Thread php
PECL pthreads
BibliothekBitte beachten Sie, dass die Einrichtung
PECL
für Ihre Apache-Umgebung ist der kniffligste TeilPlus in der gleichen post die Menschen angeregt über die Einstellung mais Arbeitsplätze für solche Anforderungen, aber es völlig abhängig von Ihrer Anforderung. Sie können
Gibt es viele hintergrund-Prozess-software wie Beanstalkd, GearMan etc...
Schlage ich vor, beanstalkd, weil es sehr leicht und einfach. Einfach zu erstellen job und pass die Warteschlange (Rohr in Ihren Bedingungen).
Einer zusätzlichen Arbeitskraft erforderlich, die weiterhin zu halten Auge auf die Tube und verarbeiten, wenn bei einem Auftrag kam.
Geben Sie einige links, die Ihnen helfen könnte,
Tatsächlich gibt es viele mehr, aber ich erinnere mich nicht, Namen zu Recht, nun.
Hinsichtlich