Example #1
0
 /**
  * 处理已读消息
  */
 public function setReadAction()
 {
     echo date('Y-m-d H:i:s') . ' setRead is started!' . PHP_EOL;
     $queueKey = Yaf\Application::app()->getConfig()->redisKeys->setReadQueue;
     $readKeyPrefix = Yaf\Application::app()->getConfig()->redisKeys->readKeyPrefix;
     $redis = RedisFactory::instance('ims', true);
     while (true) {
         while ($userId = $redis->lPop($queueKey)) {
             $key = $readKeyPrefix . '_' . $userId;
             while ($messageId = $redis->lpop($key)) {
                 $messageModel = new MessageModel($userId);
                 $messageModel->setIsRead($messageId);
             }
             //推送未读消息变动通知
             $userModel = new UserModel();
             pushModel::unreadMessageNotice($userModel->getUnreadMessageList(true));
         }
         try {
             // 闲置时检查Redis连接
             $redis->ping();
         } catch (\Exception $e) {
             $redis = RedisFactory::instance('ims', true, true);
             //重连
         }
         sleep(1);
     }
     exit;
 }