为什么要自定义命令 tp6 作者已经明确提出,php客户端不支持访问类 ,所以想用客户端访问php只能是用自定义命令,也很简单!

创建自定义命令

php think make:command Swoole tcp

代码如下

<?php
declare (strict_types = 1);

namespace app\command;

use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\input\Option;
use think\console\Output;

class Swoole extends Command
{
    protected function configure()
    {
        // 指令配置
        $this->setName('tcp')
            ->setDescription('the tcp command');
    }

    protected function execute(Input $input, Output $output)
    {
        //创建Server对象,监听 0.0.0.0:9501端口
        $serv = new \Swoole\Server("0.0.0.0", 9501);

        //监听连接进入事件
        $serv->on('Connect', function ($serv, $fd) {
            echo "与客户端已经建立连接: .\n";
        });

        //监听数据接收事件
        $serv->on('Receive', function ($serv, $fd, $from_id, $data) {
            $serv->send($fd, "服务器发送消息: ".$data);
        });

        //监听连接关闭事件
        $serv->on('Close', function ($serv, $fd) {
            echo "客户端关闭: Close.\n";
        });

        //启动服务器
        $serv->start();
        // 指令输出
        $output->writeln('tcp');
    }
}

在config下的console.php配置文件添加

return [
    // 指令定义
    'commands' => [
        'swoole_tcp' => 'app\command\Swoole',
    ],
];

命令行启行 执行该命令

php think swoole_tcp

tcp客户端 (乱码 是服务器中文字符 ,编码不一致所致,可以忽略)

成功运行自定义命令的 swoole-tcp服务

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐