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.*

 

使用方法
首先创建控制器类并继承 think\worker\Server,然后设置属性和添加回调方法,支持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问题、大小写问题等等,都没有解决

报错原因分析:没有加载到类think\worker\Server

解决办法:

既然没有加载到这个类,那我加载一下不就行了,修改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

posted on 2020-07-01 10:26  zqifa  阅读(3744)  评论(0编辑  收藏  举报

导航