下載
https://github.com/walkor/workerman-chat
運(yùn)行到我的項(xiàng)目中后
爆一大堆的thinkphp8的錯(cuò)誤,這下我就不知道怎么改了。。
Active code page: 65001
D:\laragon\www\web_page\public>php gateway_register.php gateway_gateway.php gateway_businessworker.php
---------------------------------------------- WORKERMAN -----------------------------------------------
Workerman version:4.1.15 PHP version:8.2.19
----------------------------------------------- WORKERS ------------------------------------------------
worker listen processes status
Register text://127.0.0.1:1236 1 [ok]
Fatal error: Uncaught ReflectionException: Class "app" does not exist in D:\laragon\www\web_page\vendor\topthink\framework\src\think\Container.php:377
Stack trace:
#0 D:\laragon\www\web_page\vendor\topthink\framework\src\think\Container.php(377): ReflectionClass->__construct('app')
#1 D:\laragon\www\web_page\vendor\topthink\framework\src\think\Container.php(253): think\Container->invokeClass('app', Array)
#2 D:\laragon\www\web_page\vendor\topthink\framework\src\think\Facade.php(47): think\Container->make('app', Array, false)
#3 D:\laragon\www\web_page\vendor\topthink\framework\src\think\Facade.php(97): think\Facade::createFacade()
#4 D:\laragon\www\web_page\vendor\hulang\think-addons\src\helper.php(13): think\Facade::__callStatic('getRootPath', Array)
#5 [internal function]: {closure}('app')
#6 D:\laragon\www\web_page\vendor\topthink\framework\src\think\Container.php(377): ReflectionClass->__construct('app')
#7 D:\laragon\www\web_page\vendor\topthink\framework\src\think\Container.php(253): think\Container->invokeClass('app', Array)
#8 D:\laragon\www\web_page\vendor\topthink\framework\src\think\Facade.php(47): think\Container->make('app', Array, false)
#9 D:\laragon\www\web_page\vendor\topthink\framework\src\think\Facade.php(97): think\Facade::createFacade()
#10 D:\laragon\www\web_page\vendor\hulang\think-addons\src\helper.php(13): think\Facade::__callStatic('getRootPath', Array)
#11 [internal function]: {closure}('Protocols\\Text')
#12 D:\laragon\www\web_page\vendor\workerman\workerman\Worker.php(2426): class_exists('Protocols\\Text')
#13 D:\laragon\www\web_page\vendor\workerman\workerman\Worker.php(2351): Workerman\Worker->parseSocketAddress()
#14 D:\laragon\www\web_page\vendor\workerman\workerman\Worker.php(1486): Workerman\Worker->listen()
#15 D:\laragon\www\web_page\vendor\workerman\workerman\Worker.php(1405): Workerman\Worker::forkWorkersForWindows()
#16 D:\laragon\www\web_page\vendor\workerman\workerman\Worker.php(560): Workerman\Worker::forkWorkers()
#17 D:\laragon\www\web_page\public\gateway_register.php(19): Workerman\Worker::runAll()
#18 D:\laragon\www\web_page\public\gateway_register.php(11): loadRegister()
#19 {main}
重新創(chuàng)建項(xiàng)目,里面不要有tp的東西
gateway_register
<?php
use Workerman\Worker;
use GatewayWorker\BusinessWorker;
use GatewayWorker\Gateway;
use GatewayWorker\Register;
use app\common\http\GatewayWorkerEvents;
require_once __DIR__ . '/../vendor/autoload.php';
loadRegister();
function loadRegister()
{
// register服務(wù)必須是text協(xié)議,監(jiān)聽(tīng)地址請(qǐng)用內(nèi)網(wǎng)ip或者127.0.0.1
// 為了安全,register不能監(jiān)聽(tīng)0.0.0.0,也就是register服務(wù)不能暴露給外網(wǎng)
new Register('text://127.0.0.1:1236');
// 運(yùn)行worker
Worker::runAll();
}
gateway_gateway
<?php
use Workerman\Worker;
use GatewayWorker\BusinessWorker;
use GatewayWorker\Gateway;
use GatewayWorker\Register;
use app\common\http\GatewayWorkerEvents;
require_once __DIR__ . '/../vendor/autoload.php';
loadGateway();
function loadGateway()
{
// gateway 進(jìn)程
$gateway = new Gateway('Websocket://0.0.0.0:7878');
// 設(shè)置名稱,方便status時(shí)查看
$gateway->name = 'ChatGateway';
// 設(shè)置進(jìn)程數(shù),一般兩個(gè)進(jìn)程就足夠
$gateway->count = 2;
// 分布式部署時(shí)請(qǐng)?jiān)O(shè)置成內(nèi)網(wǎng)ip(非127.0.0.1)
$gateway->lanIp = '127.0.0.1';
// 內(nèi)部通訊起始端口。假如$gateway->count=2,起始端口為2300
// 則一般會(huì)使用2300 2301 2個(gè)端口作為內(nèi)部通訊端口
$gateway->startPort = 2300;
// 心跳間隔
$gateway->pingInterval = 10;
// 心跳數(shù)據(jù)
$gateway->pingData = '{"type":"ping"}';
// 服務(wù)注冊(cè)地址
$gateway->registerAddress = '127.0.0.1:1236';
// 運(yùn)行worker
Worker::runAll();
}
gateway_businessworker
<?php
use Workerman\Worker;
use GatewayWorker\BusinessWorker;
use GatewayWorker\Gateway;
use GatewayWorker\Register;
use app\common\http\GatewayWorkerEvents;
require_once __DIR__ . '/../vendor/autoload.php';
loadBusinessWorker();
function loadBusinessWorker()
{
// bussinessWorker 進(jìn)程
$worker = new BusinessWorker();
// worker名稱
$worker->name = 'ChatBusinessWorker';
// bussinessWorker進(jìn)程數(shù)量
$worker->count = 4;
// 服務(wù)注冊(cè)地址
$worker->registerAddress = '127.0.0.1:1236';
// 事件處理類,默認(rèn)是 Event 類
$worker->eventHandler = GatewayWorkerEvents::class;
// 運(yùn)行worker
Worker::runAll();
}
這樣,你寫個(gè)test.php
<?php
require_once __DIR__ . '/../vendor/autoload.php';
var_export(class_exists('app'));
運(yùn)行 php test.php 看下是否報(bào)錯(cuò)