环境
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
出处:www.l1mn.com
原文标题:thinkphp5.0报错Class 'think\worker\Server' not found问题解决
原文地址:https://www.l1mn.com/p/a1y464.html
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
Copyright © L1MN.COM 联系方式:l1mnfw@163.com