Heim > Artikel > Backend-Entwicklung > Verwenden Sie PHP-Redis, um E-Mails an alle Benutzer zu senden. Die Datenmenge ist riesig.
Ich bin gerade etwas verwirrt.
Legen Sie im PHP-Code alle Arrays, die die Schnittstelle anfordern müssen, in den Redis-Speicher.
Verwenden Sie dann eine Schleife, um das Array herauszuholen. Aber wird dieser Prozess nicht vollständig vom PHP-Code ausgeführt?
Muss nicht der gesamte Prozess nach einem PHP-Timeout beendet werden?
Ich bin gerade etwas verwirrt.
Legen Sie im PHP-Code alle Arrays, die die Schnittstelle anfordern müssen, in den Redis-Speicher.
Verwenden Sie dann eine Schleife, um das Array herauszuholen. Aber wird dieser Prozess nicht vollständig vom PHP-Code ausgeführt?
Muss nicht der gesamte Prozess nach einem PHP-Timeout beendet werden?
Starten Sie ein PHP-Skript und führen Sie es über die Befehlszeile aus
Richtige Antwort oben.
Lassen Sie uns eine Analogie verwenden. Redis ist ein Datenpool, zu dem sowohl A als auch B eine Verbindung herstellen können. Dabei ist A Ihre aktuelle Aufgabe, die nur für das Schreiben in Redis verantwortlich ist, und B eine andere Aufgabe (z. B. die Befehlszeilenmethode, von der Charles sagte, dass sie eine Unendlichkeit starten soll). Schleifenskript) Es ist nur für das Abfragen/Löschen von E-Mail-Daten in Redis verantwortlich.
Endlosschleifen-Skript-Pseudocode:
<code>set_timelimit(0);//让这个PHP程序可以无限时的执行 while(true) { $row = $redisInstance->shiftGroup('Email');//所有要发送的邮件是一个数组的话,取出第一个 if (empty($row)) { sleep(1);//休息1秒 continue; } SendMail($row); }</code>
Sie können den Pub/Sub-Mechanismus von Redis verwenden und NodeJS verwenden, um eine einfache Nachrichtenwarteschlange zu erstellen.
<code>redis.subscribe('email','sms','push',function (err,count) { }); redis.on('message',function (chan,msg) { //处理要发送的消息 });</code>