我tp的版本是5.0.24,(在linux服务器上没有这种问题)。
首先建一个workkerman服务器处理类,到时我的备份数据库操作将放在这里面,这只是一个简单的示例文件。
<?php
namespace app\worker\controller;
use think\worker\Server;
class Worker extends Server{
public function onWorkerStart($worker){
echo 'URL:'.request()->url().PHP_EOL;
echo 'Module:'.request()->module();
}
}
然后新建一个启动文件,server.php,和项目入口文件在同一级目录,即public下面。
<?php
define('APP_PATH', __DIR__ . '/../application/');
define('BIND_MODULE','worker/Worker');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';
正常情况我们打开命令窗口去执行这个server.php,会显示成功,即应该显示为这样

但是今天很坑爹,一直提示这个错误。

从这个错误可以看出程序去访问的不是Worker类,而是Index,但是worker下面压根没有Index类,自然会报错,但是为什么它会去找Index,我前面绑定了是Worker类的,就是这个问题卡了我一个多小时,最后发现是我定义了一个访问首页的路由,是这样。
'/' => 'index/index',
经过调试发现执行脚本的时候确实是走了这个路由,取消这个路由就可以启动成功,但是这个路由我确实需要。所以不能删除。没办法,只有继续想起他办。
最后解决方法是给执行的这个脚本文件任意传一个参数,但是这个参数不能和你设置的路由冲突,因为我截取到传的这个参数在框架里面是该请求的url。但是很奇怪,我传了一个 / 参数过去,程序并没有走我设置的首页路由。但是传其他的字母组合,比如这样:/article ,则会走路由,这样就启动不了,最后启动成功是这样,(我传的斜杠 /)。

所以以后如果遇到这种奇葩问题先在后面随便给个参数,避免跟设置的首页路由冲突导致启动不了,至少可以先排除这样的情况。