/** * 处理已读消息 */ 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; }