每次建立新的连接是如何保证,绑定acceptConnection的事件只触发一次的?

sunshine

我写的例子总是会触发connect方法,一旦telnet建立了连接,会不停输出1111111。如何才能保证每次建立连接,事件只触发一次呢?

<?php

$base = event_base_new();
$event = event_new();
// 创建socket
$serv_socket = stream_socket_server('tcp://0.0.0.0:8000',$errno,$errstr);
// 设置事件循环监听
event_set($event, $serv_socket, EV_READ | EV_PERSIST,'connect',);

event_base_set($event,$base);
event_add($event);
event_base_loop($base);
// 定义事件回调
function connect($fd,$flags,$args) {
    echo 1;
}

输出结果

1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
3417 1 0
1个回答

hmmm

connect 里要调用accept吧

  • sunshine 2016-11-10

    可是accpet和触发这个connect有啥联系呢

  • hmmm 2016-11-10

    我看workerman源码里面有个accept

  • sunshine 2016-11-15

    @1005:感谢~重新写了一个例子,的确是添加了accpet就ok了,难道是accpet后,就将stream_socket_server接收到的连接可读状态给清空了么?

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