一个服务器2个项目分别装2个workerman,数据库连接句柄会公用,怎么解决呢?

phper

一个服务器装2个项目分别2个workerman,数据库连接句柄会公用,怎么解决呢?

4584 3 0
3个回答

walkor 打赏

进程间不会公用数据库连接,两个项目间更不会

请说明公用的现象

  • 暂无评论
phper

A系统和B系统都是装在同台Linux上,A系统有个workerman,数据库是$dba = Db::instance('dba'),后面的数据库操作都是用$dba来操作;B系统也有个workerman,数据库是$dbb = Db::instance('dbb');
$gateway_text->name也改了,2个workerman服务启动后,会出现client_id共用,数据库连接也会公用(就是$dba会更新到$dbb里面去),今早把$dbb中的Applications\Chat\Config\Store.php
Store::$storePath = sys_get_temp_dir().'/workerman-chat/';
改了后 就稳定了 难道就是这个问题?

还碰到个问题就是如果workerman启动了,不小心把Store::$storePath目录内容删掉(或者其他操作),这时需重启workerman就php start.php stop,提示成功,但是再php start.php start -d提示:
Workerman start
PHP Warning: stream_socket_server(): unable to connect to tcp://0.0.0.0:58252 ( Address already in use) in Workerman/Worker.php on line 1172

重复几次 还是这样 ,只能重启服务器就正常了,请问这个怎么解决呢?

  • 暂无评论
walkor 打赏

今早把$dbb中的Applications\Chat\Config\Store.php
Store::$storePath = sys_get_temp_dir().'/workerman-chat/';
改了后 就稳定了 难道就是这个问题?

多个gatewayWorker实例不能用相同的store存储。
原理就像我需要两套wordpress系统不能配置成相同的数据库一样,否则使用其一套产生的数据必然影响另外一套。

对于第二个问题,如果是因为误删文件导致无法启动,不删就是

  • 暂无评论
年代过于久远,无法发表回答
×
🔝