GatewayWorker在thinkphp使用mongodb存储数据

本文介绍如何在ThinkPHP框架中安装和配置MongoDB扩展,并使用GatewayWorker实现即时通讯功能,包括下载MongoDB、Composer安装GatewayWorker、配置数据库连接及编写事件处理代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 根据自己的php版本安装好mongodb的dll文件 安装过程
  2. 下载mongodb https://www.mongodb.com/try/download/community
  3. composer require workerman/gateway-worker 安装gatewayworker

在这里插入图片描述
4. 或者在 http://doc2.workerman.net/ 下载demo
5. 主要代码部分
application/config.php文件后面写入

"mongo"=>  [
        'type'    =>   '\think\mongo\Connection', 
        'hostname'    =>   '127.0.0.1',
        'database'    =>   '数据库名',
        'username'    =>   '',
        'password'     =>   '',
        'hostport'    =>   27017,
    ],

Events.php文件

<?php
namespace app\online\controller;
use GatewayWorker\Lib\Gateway;
use think\Db;
class Events
{


    public static function onWorkerStart($businessWorker)
    {
        # Redis
        global $mongo;
        $mongo = Db::connect("数据库名");

    }
    public static function onMessage($client_id, $message)
    {
    	global $mongo;
    	$message_data = json_decode($message, TRUE);
		switch ($message_data['type']) {
				# 给用户所在的设备发送消息 {"type":"send_to_uid", "uid":"1", "message":"你好一号"}
           		case 'send_to_uid':
           		 $reuser = Gateway::getClientIdByUid($message_data['uid']); // 被发送的用户设备
                // admin_id 通过的平台  user_id提问用户 reuser被提问用户
                if (count($reuser) <= 0) { #如果在线设备比零小-不在线 -存储数据进
                    $msg = [
                        'uid' => $user['id'],
                         "message"=> $message_data['message'],
                         'reuser'=> $message_data['uid'],
                         "sendtime" => time(),
                         "status"   =>  1,
                    ];
                    $mongo->name("message")->insert($msg); # 主要的写入部分
                }
                // $redis->hmset("message",array("uid"=>$user['id'], "message"=> $message_data['message'], 'reuser'=> $message_data['uid']));
                Gateway::sendToUid($message_data['uid'], $message_data['message']);
                break;
		}
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏范霖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值