需要做一個多用戶群發(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核
有誰能幫助解決下問題。有償