windows下安装libevent后,AsyncTcpConnection不停触发onConnect

bgyh2003
<?php

use Workerman\Worker;
use Workerman\Connection\AsyncTcpConnection;

require_once __DIR__ . '/Workerman/Autoloader.php';
require_once __DIR__ . '/Channel/src/Client.php';

$worker = new Worker(); 
$worker->count = 1; //一个进程
$worker->name = "test";
$worker->onWorkerStart = function($worker) {
     $worker->conn = new AsyncTcpConnection('ws://127.0.0.1:2000');
     $worker->conn->onConnect=function(){
          echo 1;
     };
     $worker->conn->connect();

};

// 运行所有的worker
Worker::runAll();

开启libevent后
图片不停的输出1,无限循环,注释掉libevent后一切正常

这个直接导致Channel无法使用,不知道是libevent的问题还是windows的问题

服务端代码:

use Workerman\Worker;

require_once __DIR__ . '/Workerman/Autoloader.php';
require_once __DIR__ . '/Channel/src/Client.php';

define('WORKER_NAME', 'w01'); //主进程唯一名称,分布式部署确保唯一性

$worker = new Worker('websocket://0.0.0.0:2000'); // 初始化一个websocket容器,监听2000端口
$worker->count = 1; //一个进程
$worker->name = WORKER_NAME;

$worker->onWorkerStart = function($worker) {

        };
$worker->onConnect = function($connection)use($worker) {

        };
// 当有客户端发来消息时执行的回调函数
$worker->onMessage = function($connection, $data)use($worker) {

        };

// 当有客户端连接断开时
$worker->onClose = function($connection)use($worker) {

        };

// 运行所有的worker
Worker::runAll();
2631 2 0
2个回答

bgyh2003

我的系统是windows7,php版本是php-5.5.38,换成php7.0下载对应的event也是这个问题,开启就会不停的触发onConnect,关闭就恢复正常

  • 暂无评论
maq

我估计是 WorkerMan 只要检测到存在 Libevent 扩展就会启用 Workerman\Events\Libevent(否则使用的是 Workerman\Events\Select),可能是这个 Workerman\Events\Libevent 在 Windows 下有什么问题吧,导致通信过程失败、连接断掉、重新连接……

话说,Windows 环境下也就是做个调试开发,就别搞那么复杂了,能跑起来就行了。

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