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

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

花兒

問(wèn)題描述

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

以下是代碼。
// 開(kāi)啟的端口
$worker = new Worker();
// 啟動(dòng)多少服務(wù)進(jìn)程
$worker->count = 100;
// worker名稱,php start.php status 時(shí)展示使用
//$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核
有誰(shuí)能幫助解決下問(wèn)題。有償

1368 2 0
2個(gè)回答

doit

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

  • 花兒 2022-12-28

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

又有心跳

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

  • 花兒 2022-12-28

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

  • Gin 2022-12-28

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

  • 花兒 2022-12-28

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

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