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
如果觉得这文章还算用心,请劳驾点击右下角的推荐,这是对我们这些做开源分享的最大的肯定,谢谢。
作者:zqifa
出处:https://www.cnblogs.com/zqifa/
欢迎访问新博客地址:https://www.l1mn.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。