Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden Sie PHP-Redis, um E-Mails an alle Benutzer zu senden. Die Datenmenge ist riesig.

Verwenden Sie PHP-Redis, um E-Mails an alle Benutzer zu senden. Die Datenmenge ist riesig.

WBOY
WBOYOriginal
2016-09-22 08:56:471341Durchsuche

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?

Antwortinhalt:

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>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn