项目A:GatewayWorker
项目B:home
项目A与项目B同级目录
项目需求:A负责接收硬件反馈回来的信息(TCP协议),并存储数据库,B负责提交请求给硬件,通过websocket提交到Even.php 然后Even.php 处理后 提交到硬件(TCP);
项目B是TP框架的一个项目
现在是这样:
在项目A中 start_gateway.php 定义TCP协议:
// 自动加载类
require_once __DIR__ . '/../../Workerman/Autoloader.php';
Autoloader::setRootPath(__DIR__);
// gateway 进程
$gateway = new Gateway("tcp://0.0.0.0:7659");
// gateway名称,status方便查看
$gateway->name = 'YourAppGateway';
// gateway进程数
$gateway->count = 4;
// 本机ip,分布式部署时使用内网ip
$gateway->lanIp = '127.0.0.1';
// 内部通讯起始端口,假如$gateway->count=4,起始端口为4000
// 则一般会使用4000 4001 4002 4003 4个端口作为内部通讯端口
$gateway->startPort = 2900;
// 服务注册地址
$gateway->registerAddress = '127.0.0.1:1238';
在项目A中新建start_websocket.php 负责接收http
require_once __DIR__ . '/../../Workerman/Autoloader.php';
Autoloader::setRootPath(__DIR__);
// WebServer
$web = new WebServer("http://0.0.0.0:55150");
// WebServer数量
$web->count = 2;
// 设置服务注册地址
$web->registerAddress = '127.0.0.1:1238';
// 设置站点根目录
$web->addRoot('www.your_domain.com', __DIR__.'/../../../home/');
if(!defined('GLOBAL_START'))
{
Worker::runAll();
}
在项目B中 index.html中JS如下:
<script type="text/javascript">
$(function(){
connect();
});
// 连接服务端
function connect() {
// 创建websocket
ws = new WebSocket("ws://"+document.domain+":55150");
// 当socket连接打开时,输入用户名
}
</script>
可是现在运行程序后会出现错误:WORKER EXIT UNEXPECTED
这个是什么原因?
tp项目直接用nginx php-fpm跑,没必要用workerman跑,这样start_websocket.php可以去掉了。
WORKER EXIT UNEXPECTED 应该是tp框架内部调用了exit die导致的。
那您的意思是如果抛除掉tp的问题 我这么写是没有问题的 是么?
大概看了下,没问题
@1:哦 好的。如果TP不可以 就换其他的了 非常感谢这么晚帮我解决问题
不客气