thinkphp5+workerman集成workerman/mqtt爬坑笔记

1. thinkphp5.0安装workerman   

composer require topthink/think-worker=1.0.*
(tp5.0安装workerman时要指定版本号,不然会报错)

2. 安装workerman/mqtt

composer require workerman/mqtt

按照官方文档http://doc3.workerman.net/696635#publish 测试报错,无法启动mqtt。

需要做一下修改

1.cp vendor/workerman/mqtt/src/Protocols/Mqtt.php  vendor/workerman/workerman/Protocols

2.vim vendor/workerman/workerman/Protocols   把 namespace Workerman\Mqtt\Protocols; 改为 namespace Workerman\Protocols;

3. vim /etc/php.ini (配置文件位置视个人环境而定);

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Asia/Shanghai"
;date_default_timezone_set('UTC')

修改完成后再重新按官方文档运行。但是发现无法在代码中使用Db方法。

经研究和各种尝试,结合tp官方文档https://www.kancloud.cn/manual/thinkphp5/235128和workerman官方文档http://doc3.workerman.net/696635得出以下调整,可兼容tp内的库类。

贴代码:

项目根目录下创建mqtt_publish.php

#!/usr/bin/env php

新建控制器 push/Mqttp

onWorkerStart = function(){
            $mqtt = new Client('mqtt://test.mosquitto.org:1883');

            $mqtt->onConnect = function($mqtt) {
                $mqtt->publish('test', 'hello workerman mqtt');
            };

            $mqtt->connect();
        };
        Worker::runAll();
    }

}

执行:

php mqtt_publish.php start

执行后即可通过订阅验证发送的数据。

关于订阅操作以此类推。

望指正。

你可能感兴趣的:(PHP,MQTT)