首頁  >  文章  >  後端開發  >  用php-redis給全部用戶發送郵件,資料量很大,思路應該是什麼樣的

用php-redis給全部用戶發送郵件,資料量很大,思路應該是什麼樣的

WBOY
WBOY原創
2016-09-22 08:56:471317瀏覽

目前做的有點懵。

在php程式碼裡把所有需要請求介面的陣列都放進redis 儲存裡面,
然後用循環把陣列brpo​​p出來,但是這個過程不都是靠php程式碼來執行的嗎?

php逾時之後整個進程還不是得斷掉?

回覆內容:

目前做的有點懵。

在php程式碼裡把所有需要請求介面的陣列都放進redis 儲存裡面,
然後用循環把陣列brpo​​p出來,但是這個過程不都是靠php程式碼來執行的嗎?

php逾時之後整個進程還不是得斷掉?

啟動一個php腳本,命令列運行

樓上正解。
這麼打比方吧。 Redis是一個資料池,A和B都可以連接它,其中A就是你的當前任務,它只負責寫入到Redis,而B是另一個任務(例如查爾斯說的命令列的方式啟動一個死循環腳本)它只負責查詢/刪除Redis中的郵件資料。

死循環腳本偽碼:

<code>set_timelimit(0);//让这个PHP程序可以无限时的执行
while(true) {
    $row = $redisInstance->shiftGroup('Email');//所有要发送的邮件是一个数组的话,取出第一个
    if (empty($row)) {
        sleep(1);//休息1秒
        continue;
    }
    SendMail($row);
}</code>

你可以利用Redis的Pub/Sub機制,利用NodeJS建立一個簡單的訊息佇列。

<code>redis.subscribe('email','sms','push',function (err,count) {
   
});

redis.on('message',function (chan,msg) {
    //处理要发送的消息
});</code>
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn