【已解决】使用官方demo,生产环境中channel server不能接收、推送事件消息

jie365@126.com

代码使用的是官方package中的测试代码

composer.json文件

{
    "require": {
        "workerman/workerman": "^4.0",
        "workerman/channel": "^1.1",
        "predis/predis": "^1.1"
    }
}

测试文件名 test3.php

require_once __DIR__ . '/vendor/autoload.php';

use Channel\Client;
use Channel\Server;
use Workerman\Worker;
use Workerman\Lib\Timer;

$channel_server = new Server();

$worker = new Worker();
$worker->onWorkerStart = function () {
    Client::connect();

    Client::on('test event', function ($event_data) {
        echo 'test event triggered event_data :';
        var_dump($event_data);
    });

    Timer::add(2, function () {
        Client::publish('test event', 'some data');
    });
};

Worker::runAll();

结果只有发送消息,没有订阅消息输出

服务器环境
阿里云ECS centos
php 5.6.33
workerman 4.0.26

阿里云安全组里面已经添加了允许2206端口访问

重新安装composer package,还是卡在启动画面不动。一直没有订阅消息的echo输出。

阅读 140
1个回答

walkor

截图
刚测试没有问题,看下是不是哪里改了源码导致异常了。
这个项目很久没动过了,应该没有什么问题,重新composer安装试下吧。

  • jie365@126.com 14天前

    重新安装了composer包,还是有问题

  • jie365@126.com 14天前

    重新安装composer package,源码都是最新的。还是卡在启动画面不动,一直没有订阅消息的echo输出。

  • walkor 14天前

    你的第二个截图里少一个进程啊,只启动了channelServer,测试用的进程没启动

  • jie365@126.com 14天前

    重新启动,重新截图了,有两个进程。还是一样的情况,没有订阅消息输出。

  • jie365@126.com 14天前

    curl -Ss https://www.workerman.net/check | /usr/local/php_all/bin/php 环境检测都ok
    pcntl、posix、sockets、event扩展都安装上了,stream、pcntl、posix相关函数都启用了。

  • jie365@126.com 14天前

    php错误日志也没有错误提醒

  • walkor 14天前

    这个不清楚了,我这没有环境,没办法定位

  • jie365@126.com 14天前

    找到问题了,我去掉了php.ini中这两个禁用函数就ok了 stream_socket_accept,stream_socket_pair
    这个文档https://www.workerman.net/doc/workerman/faq/disable-function-check.html中没有提到stream_socket_accept这个函数

  • walkor 14天前

    好的,感谢反馈。