perf: 优化任务队列

This commit is contained in:
kuaifan
2022-11-03 10:49:00 +08:00
parent acd7193e55
commit 8ce7d3689f
10 changed files with 117 additions and 77 deletions

View File

@@ -23,6 +23,8 @@ class WebSocketDialogMsgTask extends AbstractTask
protected $ignoreFd;
protected $msgNotExistRetry = false; // 推送失败后重试
protected $silence = false; // 静默推送1:前端不通知、2:App不推送
protected $endPush = [];
protected $endArray = [];
/**
* WebSocketDialogMsgTask constructor.
@@ -72,7 +74,7 @@ class WebSocketDialogMsgTask extends AbstractTask
if ($this->msgNotExistRetry) {
$task = new WebSocketDialogMsgTask($this->id, $this->ignoreFd || '');
$task->delay(1);
$this->addTask($task);
$this->endArray[] = $task;
}
return;
}
@@ -123,7 +125,7 @@ class WebSocketDialogMsgTask extends AbstractTask
$msg->save();
// 开始推送消息
foreach ($array as $userid => $mention) {
PushTask::push([
$this->endPush[] = [
'userid' => $userid,
'ignoreFd' => $this->ignoreFd,
'msg' => [
@@ -134,7 +136,7 @@ class WebSocketDialogMsgTask extends AbstractTask
'mention' => $mention,
]),
]
]);
];
}
// umeng推送app
if (!$this->silence) {
@@ -147,14 +149,13 @@ class WebSocketDialogMsgTask extends AbstractTask
if ($dialog->type == 'group') {
$umengTitle = "{$dialog->getGroupName()} ($umengTitle)";
}
$umengMsg = new PushUmengMsg($umengUserid, [
$this->endArray[] = new PushUmengMsg($umengUserid, [
'title' => $umengTitle,
'body' => $msg->previewMsg(),
'description' => "MID:{$msg->id}",
'seconds' => 3600,
'badge' => 1,
]);
Task::deliver($umengMsg);
}
// 推送目标②:正在打开这个任务会话的会员
@@ -168,7 +169,7 @@ class WebSocketDialogMsgTask extends AbstractTask
}
}
if ($array) {
PushTask::push([
$this->endPush[] = [
'userid' => $array,
'ignoreFd' => $this->ignoreFd,
'msg' => [
@@ -177,9 +178,17 @@ class WebSocketDialogMsgTask extends AbstractTask
'silence' => $this->silence ? 1 : 0,
'data' => $msg->toArray(),
]
]);
];
}
}
}
}
public function end()
{
foreach ($this->endArray as $task) {
Task::deliver($task);
}
PushTask::push($this->endPush);
}
}