swoole_server->on [编辑本页]

注册Server的事件回调函数。

bool swoole_server->on(string $event, mixed $callback);
  • 第1个参数是回调的名称, 大小写不敏感,具体内容参考回调函数列表,事件名称字符串不要加on
  • 第2个函数是回调的PHP函数,可以是函数名的字符串,类静态方法,对象方法数组,匿名函数。
$serv = new swoole_server("127.0.0.1", 9501);
$serv->on('connect', function ($serv, $fd){
    echo "Client:Connect.\n";
});
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
    $serv->send($fd, 'Swoole: '.$data);
    $serv->close($fd);
});
$serv->on('close', function ($serv, $fd) {
    echo "Client: Close.\n";
});
$serv->start();

  • 蓝颜

    韩老大,是否可以将Swoole只用作一个实际上并不需要监听客户端连接以及响应请求发送的服务端(比如统计分析后台服务,实际上这里只把Swoole充当一直运行着的并依靠定时器工作的后台服务)?这样的话如果强制需要设置onReceive事件的话,也只是给一个空回调函数。

  • Pader

    Linux 我没测试,但在 FreeBSD 上经常出现就连示例的代码都打开无响应的情况,网络一直是等待响应的状态。我之前在另外一台真机上测试也出现这种情况,但后来改成 SWOOLE_PROCESS 模式就没问题,而这次在虚拟机里无论用什么模式都不行。之前是实体机 FreeBSD 10.0 64位系统,现在这个是虚拟机中 FreeBSD 10.0 32位系统。而且运行后只要一访问就会在当前目录下生成一个 14M 的 php.core 文件。最近的各种尝试体验让我觉得 swoole 还是不太稳定,但特性是很强大的。

  • Rango-韩天峰

    这可能是内核兼容性问题,可以反馈给我们。开源软件的成熟离不开用户的反馈。

  • _wuhui

    我也想这样玩。

  • Rango-韩天峰

    你用swoole_process就好了。

  • 蓝颜

    好,谢谢

  • 止水之约

    new 出来的swoole_server对象 和 回调函数中传入的 $serv 是否是同一个对象

  • Rango-韩天峰

    是同一个。

  • Su孤兒zzzzzzzJ

    我想请问一下,我在win下用cygwin 弄了一个swoole 的udp Server,在同局域网下的一个手机,用软件进行udp client 发送数据,服务器无法正常获取到IP地址,port端口和消息内容,所以想请教一下这是为什么的呢