两次尝试,如下。
尝试一,在config/bootstrap.php
配置文件添加一个Bootstrap
,然后在start
方法里面直接new channel、GlobalData服务。
代码如下:
use Webman\Bootstrap as WebmanBootstrap;
class Bootstrap implements WebmanBootstrap
{
public static function start($worker)
{
$channel = new \Channel\Server();
$global = new \GlobalData\Server();
}
}
结果:
尝试二,配置process.php:
'websocket' => [
'handler' => process\GlobalChannelServer::class,
'count' => 1,
],
在GlobalChannelServer的onWorkerStart
方法中new channel、GlobalData服务。
代码如下:
<?php
namespace process;
use Channel\Server;
class GlobalChannelServer
{
public function onWorkerStart()
{
$channel = new Server();
$global = new \GlobalData\Server();
}
}
结果:
尝试了以上两种方法,问题都是服务不能起来。在根目录创建server文件却可以跑起来。
代码如下:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Channel\Server as ChannelServer;
use GlobalData\Server as GlobalDataServer;
$channelServer = new ChannelServer();
$globalDataServer = new GlobalDataServer();
\Workerman\Worker::runAll();
虽然最后解决了问题,但是不理解为什么前面两种不能成功创建服务。在新文件中也是Worker::runAll,启动,在webman中最后也是Worker::runAll启动,为什么不行呢?如果想集成到webman中,有什么办法吗?
$channelServer = new ChannelServer();
$globalDataServer = new GlobalDataServer
放到原来的start.php里就好了。
这是一种方法,感谢