使用workerman-redis AsyncTcpConnection方法中报错

codeliu

使用AsyncTcpConnection方法

使用 workerman-redis 在这个方法报错,workman的php其余环境应该是有的

程序代码

    // Add socket to global event loop waiting connection is successfully established or faild.
        Worker::$globalEvent->add($this->_socket, EventInterface::EV_WRITE, array($this, 'checkConnection'));

报错信息

 [Error]
  Call to a member function add() on null

截图报错信息里报错文件相关代码






操作系统及workerman/webman等框架组件具体版本

本地是windows64 php 7.4.3
线上也是 linux centos7 php7.4.30
用的框架是tp6 后面的打印是add里面的参数

追加一个小问题

这个开源项目在这个环境下都能正常运行

但是这个还是会有问题

811 1 0
1个回答

walkor

workerman/redis 只能在workerman的运行环境使用

  • codeliu 2022-10-30

    大佬,意思是使用前提还需要我在这个框架安装workman的运行环境的意思吗?还是我只能单独类似下个webman,再在其中使用这个workman/redis呢

  • walkor 2022-10-30

    tp里直接用redis扩展

  • codeliu 2022-10-30

    好的,谢了,大佬可以多问一个小问题吗就是截图里面追加的那个,就该有的环境什么的都有的话,执行workman的那个redis还是会有点问题,或者说是不是需要分开用, tp用 redis, workman需要单独启动

  • walkor 2022-10-30

    workerman运行环境,是指执行 php start.php start 启动的workerman相关进程的内部运行环境,里面包含了workerman/redis执行依赖的变量、类实例等,而且这些只有在workerman进程里能访问到。

    执行php think worker:queue 并没有启动workerman,仅仅是引用了workerman/redis类文件,也没workerman/redis依赖的workerman环境,无法使用workerman/redis。

    还有workerman/redis 手册有讲,除非是在workerman环境里需要使用subscribe/pSubscribe异步订阅,否则都用redis扩展。你在tp更应该使用redis扩展才对。

  • codeliu 2022-10-31

    嗯嗯,好的,谢啦大佬,明白了

年代过于久远,无法发表回答
🔝