队列消息 [ 2.0 版本 ]
求个思路
需求:我给用户发送一个链接,当用户点击之后链接失效,
重点需求:如果用户不点击,则3分钟再次发送,五分钟再次发送,7分钟再次发送
还是不点击,那么则发送给客服。
如何做这个功能
最佳答案
-
<?php function main() { Yii::$app->queue->push(new SendLinkJob([ 'link' => 'https://baidu.com', 'startAt' => time(), 'times' => 1, ])); } class SendLinkJob extends BaseObject implements \yii\queue\JobInterface { public $link; public $startAt; public $times; public function execute($queue) { if (! $this->isLinkValid()) { return false; } if (4 == $this->times) { return $this->sendToService(); } $this->sendLink(); Yii::$app->queue->delay($this->getDelay())->push(new SendLinkJob([ 'link' => $this->link, 'startAt' => $this->startAt, 'times' => ++$this->times, ])); } public function isLinkValid() { // ... return true; } public function sendLink() { // 发链接到客服端 } public function sendToService() { // 发到客服 } protected function getDelay() { switch ($this->times) { case 1 : return 180; /* 三分钟 */ case 2 : return 120; /* 两分钟 */ case 3 : return 120; // 两分钟 } } }
共 4 条回复LaravelCode , 开门_查水表 觉得很赞
其他 1 个回答
郝立国
注册时间:2017-02-09
最后登录:2024-01-11
在线时长:77小时3分
最后登录:2024-01-11
在线时长:77小时3分
- 粉丝6
- 金钱2925
- 威望110
- 积分4795