Thinkphp6.x 如何配置使用 Workerman

首先我们来了解下什么是Workerman

Workerman是一款纯PHP开发的开源高性能的PHP socket 服务器框架。被广泛的用于手机app、手游服务端、网络游戏服务器、聊天室服务器、硬件通讯服务器、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。基于workerman开发者可以更专注于业务逻辑开发,不必再为PHP Socket底层开发而烦恼。

实现步骤

1、首先通过 composer 安装

composer require topthink/think-worker

windows 服务器需要下载的

composer require workerman/workerman-for-win

2、安装成功后config 目录下,会多出几个文件

3、打开worker_server.php 我们看到他默认的监听端口是2345,下面虽然也提供了一些回调方法,但是毕竟是在配置文件中,我们也不太好扩展,所以我们这时需要自定义workerman服务类

步骤如下:

3.1 新建一个应用,比如命名为http,然后新建一个php 类 Worker.php

<?php

namespace app\http;

use think\worker\Server;

class Worker extends Server
{

    protected $socket = 'websocket://localhost:2345';

    public function onMessage($connection, $data)
    {
        $connection->send("已经收到");
    }

    /**
     * 当连接建立时触发的回调函数
     * @param $connection
     */
    public function onConnect($connection)
    {
        $connection->send("连接成功");
    }

    /**
     * 当连接断开时触发的回调函数
     * @param $connection
     */
    public function onClose($connection)
    {

    }

    /**
     * 当客户端的连接上发生错误时触发
     * @param $connection
     * @param $code
     * @param $msg
     */
    public function onError($connection, $code, $msg)
    {
        echo "error $code $msg\n";
    }

    /**
     * 每个进程启动
     * @param $worker
     */
    public function onWorkerStart($worker)
    {

    }

}

3.2、然后在回到刚才的配置文件worker_server.php,修改worker_class 为你刚才创建的类,定义该参数后,其它配置参数均不再有效。

4、使用Workerman作为HttpServer,启动服务端,至此我们的服务端已经搭建完成了

php think worker:server

出现此图就表示已经开启成功了,切记的是,一定不要关闭,一定不要关闭

5、我们可以新建一个html ,查看一下是否可以正常使用

<html>
    <head>
        <meta charset="utf-8" />
        <title>网页版群聊</title>
    </head>
    <body>
        <script>
            ws = new WebSocket("ws://localhost:2345");
            ws.onopen = function() {
                console.info("webSocket通道建立成功!!!");
                ws.send('hello');
                console.log("给服务端发送一个字符串:hello");
            };
            ws.onmessage = function(even) {
                console.log("收到服务端的消息:" + even.data);
            };
        </script>
    </body>
</html>

预览后,我们可以看到,已经通道已经建立成功了,之后可以随意挥霍你的业务逻辑了

补充一点小知识

使用Workerman也可以作为HttpServer,(ps:一般我们不需要)

他的命令是

php think worker

linux下面可以支持下面指令

php think worker [start|stop|reload|restart|status]

使用Workerman作为HttpServer

他的命令是

php think worker:server

linux下面可以支持下面指令

php think worker:server [start|stop|reload|restart|status]

以上这篇Thinkphp6.x 如何配置使用 Workerman就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持晴川云。

原创文章,作者:晴川运维,如若转载,请注明出处:https://baike.qcidc.com/15145.html

(0)
晴川运维晴川运维
上一篇 2025年10月9日
下一篇 2025年10月9日

相关推荐

  • 分析PHP7.2忽略父类方法以及Liskov替换原则相关问题

    细说 php 7.2 子类覆盖方法省略参数类型功能以及 Liskov 替换原则 PHP 7.2 出来也有段时间了,关于新版本有什么新改进,只要你关心 PHP 的发展,应该都看过。这…

    网站和优化 2025年6月23日
  • php 怎么实现日期转中文

    本文操作环境:windows7系统,php7.4版,Dell G3电脑。 php 怎么实现日期转中文? PHP 日期转中文汉字 $date_str = $this -> to…

    网站和优化 2025年6月8日
  • PHP clone关键字(克隆对象)

    php 中的对象模型是通过引用来调用对象的,但有时需要建立一个对象的副本,在改变原有对象时不希望影响到对象副本。如果使用 new关键字重新创建对象,再为属性赋上相同的值,这样做会比…

    网站和优化 2025年9月16日
  • php高并发测试:防止库存超卖的案例讲解

    在之前的文章《php高并发情形下怎么防止商品库存超卖》中,我们讲到了关于在高并发情况下防止商品库存超卖的相关问题,下面我们一起来看一下防止库存超卖之并发测试的相关内容,希望对大家有…

    网站和优化 2025年6月22日
  • 如何解决php 签名出错问题

    本文操作环境:Windows7系统、php7.1版、DELL G3电脑 如何解决php 签名出错问题? 问题描述: 我正在使用 TCPDF 生成一个 pdf 文档并对其进行签名.T…

    网站和优化 2025年6月27日
  • MySQL数据库备份与恢复

    尽管采取了一些管理措施来保证数据库的安全,但是在不确定的意外情况下,总是有可能造成数据的损失。例如,意外的停电,不小心的操作失误等都可能造成数据的丢失。 所以为了保证数据的安全,我…

    网站和优化 2025年6月4日
  • php的虚拟主机是什么意思

    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑 PHP虚拟主机是什么? 支持PHP语言开发的虚拟主机,我们把它称为PHP虚拟主机。 PHP的网页文件格式是…

    网站和优化 2025年10月6日
  • php怎么获取数字的第几位值

    本教程操作环境:windows7系统、php7.1版、DELL G3电脑 php获取数字的第几位值 方法1:使用substr()函数 <?php header(“Conten…

    网站和优化 2025年6月8日
  • php怎么从数组取不同的值

    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑 php从数组取不同的值 1、利用array_unique() 函数: array_unique() 函数用…

    网站和优化 2025年10月8日
  • PHP Session和Cookie的区别

    无论是在系统运维还是 php 开发人员的面试中,经常会被问到 Session 和 Cookie 在 PHP 中的区别?本节我们就来归纳总结一下。 Cookie 仅由客户端生成、管理…

    网站和优化 2025年6月28日

发表回复

登录后才能评论