zqifa的博客

我不管,反正我最萌~

thinkphp5.0报错Class 'think\worker\Server' not found问题解决

环境

win7
thinkphp 5.0
think-worker 1.0.*

在thinkphp 5.0上使用workman

参照官网教程步骤如下

安装think-worker 1.0.*版本

composer require topthink/think-worker 1.0.*

使用方法
首先创建控制器类并继承 thinkworkerServer,然后设置属性和添加回调方法,支持workerman所有的回调方法定义(回调方法必须是public类型)

namespace app\index\controller;

use think\worker\Server;

class Worker extends Server
{
    protected $socket = 'http://0.0.0.0:2346';

    public function onMessage($connection,$data)
    {
        $connection->send(json_encode($data));
    }
}

在应用根目录增加入口文件 server.php

#!/usr/bin/env php
<?php
define('APP_PATH', __DIR__ . '/application/');

define('BIND_MODULE','index/Worker');

// 加载框架引导文件
require __DIR__ . '/thinkphp/start.php';

在命令行启动服务端

php server.php start

linux下面可以支持下面指令

php server.php start|stop|status|restart|reload

执行php server.php start后报错

[think\exception\ErrorException]
Class 'think\worker\Server' not found

找了一些资料,说的是composer问题、大小写问题等等,都没有解决

报错原因分析:没有加载到类thinkworkerServer

解决办法:

既然没有加载到这个类,那我加载一下不就行了,修改server.php

server.php文件代码:

#!/usr/bin/env php
<?php
define('APP_PATH', __DIR__ . '/application/');

define('BIND_MODULE','index/Worker');

//加载composer autoload文件
require __DIR__ . '/vendor/autoload.php';

// 加载框架引导文件
require __DIR__ . '/thinkphp/start.php';

保存后,执行php server.php start,出现如下内容:

----------------------- WORKERMAN -----------------------------
Workerman version:3.5.30          PHP version:5.6.9
------------------------ WORKERS -------------------------------
worker               listen                              processes status
none                 http://0.0.0.0:2346                 4         [ok]

成功开启websocket服务,问题解决。

参考文档:
1.think-worker 1.0官网使用教程
https://github.com/top-think/think-worker/tree/v1.0.1

作者:zqifa

出处:https://www.l1mn.com

原文地址:https://www.l1mn.com/p/a1y464.html

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

分类:php

Copyright © zqifa 联系方式:z___qf@163.com