,
https://www.workerman.net/doc/workerman/faq/multi-woker-for-windows.html
这个文档里面不太具体,我这种方式的要怎样拆分成三个呢
laravel自带命令行,感觉和文档里windows启动多个worker冲突,要么拆成三个命令分别执行,要么用linux系统吧
那分成三个什么样子的呢
分成三个命令 php artisan gateway-worker:register start php artisan gateway-worker:gateway start php artisan gateway-worker:worker start
在Windows下都会报那个链接 其实不影响使用
其他两个没有启动就启动了一个
连接不上
,这样嘛
<?php namespace App\Console\Commands; use App\GatewayWorker\Events; use Illuminate\Console\Command; use GatewayWorker\BusinessWorker; use GatewayWorker\Gateway; use GatewayWorker\Register; use Workerman\Worker; class GatewayService extends Command { /** * * 程序的根目录下执行 php artisan workman start * php artisan workman start --d * @var string */ protected $signature = 'workman {action} {--d}'; /** * The console command description. * * @var string */ protected $description = 'Start a Workerman server.'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() { global $argv; $action = $this->argument('action'); $argv[0] = 'artisan workman'; $argv[1] = $action; $argv[2] = $this->option('d') ? '-d' : ''; //必须是一个-,上面定义命令两个--,后台启动用两个-- $this->start(); } private function start() { $this->startGateWay(); $this->startBusinessWorker(); $this->startRegister(); Worker::runAll(); } private function startBusinessWorker() { $worker = new BusinessWorker(); $worker->name = 'BusinessWorker'; $worker->count = 1; $worker->registerAddress = '127.0.0.1:1236'; $worker->eventHandler = Events::class; } private function startGateWay() { $gateway = new Gateway("tcp://0.0.0.0:2347"); $gateway->name = 'Gateway'; $gateway->count = 4; $gateway->lanIp = '127.0.0.1'; $gateway->startPort = 40001; $gateway->pingInterval = 30; $gateway->pingNotResponseLimit = 0; $gateway->pingData = '{"type":"ping"}'; $gateway->registerAddress = '127.0.0.1:1236'; } private function startRegister() { new Register('text://0.0.0.0:1236'); } }
这样和我的文件一样启动还是不可以,用了你的也不行
是tcp链接不上吗?
对
报这个
这个是在Windows下不支持
只能在linux下执行
,这是另外一种直接下载放进去的在win系统下面可以
但是这相当于两个服务,这样我就调用不了原来项目里面的接口了
恩! 命令行执行是有这个问题
两个其实不影响的,都可以使用
那如果我用这种点击运行的,想调接口就只能用http请求去调用对吧
恩! 是这样的
三Q啦
你知道自定义协议接收数据不是我想要的怎样消费掉嘛,它现在一直加在后面
自定义协议的话 要看手册这章https://www.workerman.net/doc/workerman/protocols/how-protocols.html 去处理黏包数据等 处理接收的数据 也是在onMessage里面去处理啊
哦哦谢谢啦
还想再问一下,我自己定义的协议,启动的时候报找不找这个自定义的协议是因为没有引对命名空间嘛 ,
你的namespace 没有对
第四行和第六行
,我改了一下,我这个自定义的放在项目根目录下的,好像还是启动不起来
是这样改的嘛
现在是报什么错误?
就是和刚才一样的
说找不到我自定义的那个类
看老大之前解答: https://www.workerman.net/q/837
不用那么麻烦,手动require进去就完了
手动require在linux上面运动报找不不到这个类
https://www.workerman.net/doc/workerman/faq/multi-woker-for-windows.html
这个文档里面不太具体,我这种方式的要怎样拆分成三个呢
laravel自带命令行,感觉和文档里windows启动多个worker冲突,要么拆成三个命令分别执行,要么用linux系统吧
那分成三个什么样子的呢
分成三个命令
php artisan gateway-worker:register start
php artisan gateway-worker:gateway start
php artisan gateway-worker:worker start
在Windows下都会报那个链接 其实不影响使用
其他两个没有启动就启动了一个
连接不上
,这样嘛
这样和我的文件一样启动还是不可以,用了你的也不行
是tcp链接不上吗?
对
报这个
这个是在Windows下不支持
只能在linux下执行
,这是另外一种直接下载放进去的在win系统下面可以
但是这相当于两个服务,这样我就调用不了原来项目里面的接口了
恩! 命令行执行是有这个问题
两个其实不影响的,都可以使用
那如果我用这种点击运行的,想调接口就只能用http请求去调用对吧
恩! 是这样的
三Q啦
你知道自定义协议接收数据不是我想要的怎样消费掉嘛,它现在一直加在后面
自定义协议的话 要看手册这章https://www.workerman.net/doc/workerman/protocols/how-protocols.html 去处理黏包数据等 处理接收的数据 也是在onMessage里面去处理啊
哦哦谢谢啦
还想再问一下,我自己定义的协议,启动的时候报找不找这个自定义的协议是因为没有引对命名空间嘛
,
你的namespace 没有对
第四行和第六行
,我改了一下,我这个自定义的放在项目根目录下的,好像还是启动不起来
是这样改的嘛
现在是报什么错误?
就是和刚才一样的
说找不到我自定义的那个类
看老大之前解答: https://www.workerman.net/q/837
不用那么麻烦,手动require进去就完了
手动require在linux上面运动报找不不到这个类