国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

需要做一個多用戶群發(fā)模板消息的功能。多個用戶同時給自己上千個會員發(fā)送模板消息。

花兒

問題描述

需要做一個多用戶群發(fā)模板消息的功能。多個用戶同時給自己上千個會員發(fā)送模板消息。
還有定時發(fā)送任務(wù)。但是這里有個問題。在發(fā)送任務(wù)稍微多點比如幾百上千的時候。發(fā)送的數(shù)據(jù)會有延遲1-2個小時甚至更久才能發(fā)送出去。請教下是哪兒出了問題?

以下是代碼。
// 開啟的端口
$worker = new Worker();
// 啟動多少服務(wù)進(jìn)程
$worker->count = 100;
// worker名稱,php start.php status 時展示使用
//$worker->name = 'redis';

$worker->onWorkerStart = function () {
$redis = new Rediss;
$redis->pconnect('127.0.0.1', 6379);
$Weixin = new Weixin();
$queue = array("sendmsg","tuikuanmsg","renewsendmsg");
//$queue = "sendmsg";

 while($redis){
     $time = time();
     $ret = $redis->blPop($queue, 60);
     if($ret && count($ret) == 2 && $ret[1]) {

         $info = json_decode($ret[1],true);
         $wxfdid=$info["wxfdid"];
         $appid=$info["appid"];
         $secret=$info["secret"];
         $token = checkAccessTokenFD($redis,$wxfdid,$appid,$secret);
         if(!$token) {
             echo "token miss";
             continue;
         }

         if($ret[0] == "sendmsg"){
             if($info["sendtype"] == 1 || $info["sendtype"] == 3 || ($info["sendtype"] == 2  && ($info["sendtime"]-$time) <= 3)){
                 $Weixin->sendMsg($info, $token);
                 if($info["sendtype"] == 3){
                     $info["sendtype"] = 2;
                     $info["materialstitle"] = "【再次通知】".$info["materialstitle"];
                     $info["title"] = "【再次通知】".$info["title"];
                     $info["mbtitle"] = "【再次通知】".$info["mbtitle"];
                     $redis->lPush("sendmsg", json_encode($info));
                 }
             }elseif($info["sendtype"] == 2  && ($info["sendtime"]-$time) > 3){
                 $redis->lPush("sendmsg", $ret[1]);
             }
         }elseif($ret[0] == "tuikuanmsg"){
            $Weixin->tuikuanMsg($info, $token);
         }elseif($ret[0] == "renewsendmsg"){
             $Weixin->renewSendMsg($info, $token);
         }
     }
 }

};

Worker::runAll();

這是代碼

服務(wù)器的帶寬 10M,內(nèi)存 8G,CPU 8核
有誰能幫助解決下問題。有償

1289 2 0
2個回答

doit

可以針對每個進(jìn)程的任務(wù)記錄日志看下,這種耗時任務(wù)可以多開進(jìn)程處理

  • 花兒 2022-12-28

    我上面寫了100個進(jìn)程呢,但是發(fā)送300-500個數(shù)據(jù)都要延遲1個小時左右。不知道什么情況

又有心跳

不太明白你的redis是什么意思,但感覺問題就出在 $ret = $redis->blPop($queue, 60);阻塞了

  • 花兒 2022-12-28

    REDIS里面記錄了數(shù)據(jù),這兒是把所有REDIS的數(shù)據(jù)取出來,然后發(fā)送模板消息。 $ret = $redis->blPop($queue, 60);這兒應(yīng)該怎么處理呢?

  • Gin 2022-12-28

    異步隊列后臺去執(zhí)行, blpop 阻塞肯定延遲

  • 花兒 2022-12-28

    我的寫了WHILE循環(huán)呢。也阻塞?

年代過于久遠(yuǎn),無法發(fā)表回答
??