


Implementierungsmethode für asynchrones Massenmailing mit thinkphp5 und swoole
Dieser Artikel teilt Ihnen hauptsächlich die Implementierungsmethode des asynchronen Massenmailings in thinkphp5 und swoole mit. Ich hoffe, er kann Ihnen helfen.
1. Umgebungsbeschreibung
Alibaba Cloud Centos7
thinkphp5.0.11
swoole2.0.8
2 E-Mail-Versand
Erstellen Sie das folgende Dateiverzeichnis unter dem Projekt:
Unter anderem ist SendMail.php die Datei, die wir tatsächlich zum Senden von E-Mails aufrufen . Das Folgende ist der Hauptcode: Die Konfigurationselemente in
namespace app\library\utils\mail;use app\library\utils\mail\PhpMailer;use app\library\utils\mail\Smtp;use think\Log; error_reporting(E_STRICT); date_default_timezone_set('Asia/Shanghai');class SendMail{ static function postmail($to,$subject = '',$body = ''){ $mail = new PhpMailer(); $mail->CharSet = config('mail.CharSet'); $mail->IsSMTP(); $mail->SMTPDebug = config('mail.SMTPDebug'); $mail->SMTPAuth = config('mail.SMTPAuth'); $mail->SMTPSecure = config('mail.SMTPSecure'); $mail->Host = config('mail.Host'); $mail->Port = config('mail.Port'); $mail->Username = config('mail.Username'); $mail->Password = config('mail.Password'); $mail->SetFrom(config('mail.From'), config('mail.Name')); $mail->Subject = $subject; $mail->MsgHTML($body); $address = $to; $mail->AddAddress($address, ''); if(!$mail->Send()) { Log::write('send to '.$to.'error info:'.$mail->ErrorInfo); return false; } else { return true; } } }
werden in der Datei config.php unter dem Projekt abgelegt. Der spezifische Konfigurationsinhalt lautet wie folgt:
//邮箱设置 'mail'=>[ 'CharSet'=>'UTF-8', 'SMTPDebug'=>0,// 启用SMTP调试功能 0关闭 'SMTPAuth'=>true,// 启用 SMTP 验证功能 'SMTPSecure'=>'ssl',// 安全协议 'Host'=>'smtp.163.com',// SMTP 服务器 'Port'=>465,// SMTP服务器的端口号 'Username'=>'**********',// SMTP服务器用户名 'Password'=>'**********',// SMTP服务器密码 'From'=>'*********@163.com',// 发件人邮箱 'Name'=>'blue',// 发件人邮箱 ]
2.1
Hier implementieren wir nur die vom SMTP-Protokoll gesendete Demo, daher ist sie auf Verpackungsebene nicht sehr umfassend und flexibel. Die anderen beiden Dateien im Bild (PhpMailer.php und Smtp.php) sind die Kerndateien der PHPMailer-E-Mail-Versandklasse. Zur Vereinfachung des Aufrufs können Sie sich auf die Verwendung von gayhub beziehen Anleitung phpmailer
2.2 Hinweise
In diesem Schritt müssen wir auf einige Punkte achten: 1. Ob das Konto, das Sie zum Senden der E-Mail festgelegt haben, SMTP aktiviert hat und das entsprechende Sicherheitsprotokoll finden und Portnummer. 2. Ob der aktuelle Server den SMTP-Dienst unterstützt, der häufig von einigen Socket-Funktionen betroffen ist. Wenn Probleme auftreten, sollten wir den SMTPDebug-Parameter auf 1 setzen und dann sorgfältig anhand der Debug-Informationen debuggen. 3. Einige gesendete E-Mails werden in den Papierkorb verschoben. Bitte überprüfen Sie sie sorgfältig.
2.3 Rufen Sie
auf, um die folgende Dateiverzeichnisstruktur einzurichten:
Rufen Sie die Methode zum Senden von E-Mails in Index.php auf, die spezifische Der Code lautet wie folgt:
public function sendMail() { if(SendMail::postmail('937069176@qq.com','test','123')) { echo 'send success'; }else{ echo 'send fail'; } }
2.4 Anrufergebnis
Wir finden eine E-Mail, die wir gerade gesendet haben, im Papierkorb von QQ Mailbox
3. Mit Swoole kombinieren, um asynchronen Massenversand zu erreichen
3.1 Swoole installieren
Die detaillierten Schritte zur Installation der Swoole-Erweiterung sind auf der offiziellen Website verfügbar, also habe ich gewonnen. Um nicht auf Details einzugehen, das Swoole-Dokumentenportal
Nach der Installation von Swoole wird empfohlen, Swoole-Code-Eingabeaufforderungen zu Ihrer IDE hinzuzufügen und das Portal für IDE-Eingabeaufforderungen Swoole-Code zu konfigurieren
3.2 Asynchrones Massensenden implementieren
Wir implementieren zunächst den asynchronen Server:
/** * description:服务端 */ public function syncSend(){ $serv = new \swoole_server('0.0.0.0',8082); $serv->set(array('task_worker_num' => 4)); $serv->on('receive', function($serv, $fd, $from_id, $data) { $task_id = $serv->task($data); echo "开始投递异步任务 id=$task_id\n"; }); $serv->on('task', function ($serv, $task_id, $from_id, $data) { echo "接收异步任务[id=$task_id]".PHP_EOL; for ($i = 0 ; $i<20;$i++){ if(SendMail::postmail('937069176@qq.com','test',$data)){ echo 'send'.$i.' success'."\n"; }else{ echo 'send'.$i.' fail'."\n"; } } $serv->finish(''); }); $serv->on('finish', function ($serv, $task_id, $data) { echo "异步任务[id=$task_id]完成".PHP_EOL; }); $serv->start(); }
Auf der Serverseite haben wir eine 20er-Schleife verwendet, um Massenversand zu simulieren, und diese tatsächlich in eine andere E-Mail-Adresse geändert.
Als nächstes implementieren wir den Client
/** * description:客户端 */ public function index() { $client = new \swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC); $ret = $client->connect("127.0.0.1", 8082); if(empty($ret)){ echo 'error!connect to swoole_server failed'; } else { $client->send('blue');//这里只是简单的实现了发送的内容 } }
3.3 Starten Sie den Server
Hier müssen Sie die CLI-Methode verwenden, wir geben das Stammverzeichnis des Projekts ein.
Ausführen
netstat -apn | grep 8082
Überwachen Sie zunächst, ob Port 8082 belegt ist,
kill -9 PID(进程号)
Beenden Sie den Prozess
Dann führen wir
ausphp public/index.php index/index/syncSend
Die Funktion dieses Befehls besteht darin, den CLI-Modus zu verwenden, um unseren 8082-Port in den Überwachungszustand zu versetzen. Und lassen Sie dieses Terminal aktiv, damit wir die gesendeten Ergebnisse sehen können.
接着我们可以用CLI或者浏览器访问的方式来访问我们的客户端
php public/index.php index/index/index
当我们执行一次的时候客户端的时候,我们可以在服务端的终端看到屏幕上面出现如下的画面:
说明我们已经正常群发了。
下面,我们就来测试异步,因为163服务器会对IP进行检测,如果在某个时间发送也别频繁的话,会出现发送失败的情况,所以我们测试的时候,采用连续执行4次客户端的方式
下面是执行的结果:
从图中发送的顺序来看,我们可以很容易的判断,我们已经实现了异步的发送。
邮箱里面也接收到了刚刚发送的邮件。
4、后记~
swoole是一种想要熟悉和熟练使用的扩展,但是限于网络编程知识的不足,所以还是要多多测试和学习,demo中有不足的地方,还请指出。
Das obige ist der detaillierte Inhalt vonImplementierungsmethode für asynchrones Massenmailing mit thinkphp5 und swoole. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

CakePHP ist ein Open-Source-MVC-Framework. Es erleichtert die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich. CakePHP verfügt über eine Reihe von Bibliotheken, um die Überlastung der häufigsten Aufgaben zu reduzieren.

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen
