我在web-sender中此处引入了之后,在其它地方例如on('connection'均无法获得该$db, 请教一下sender应该如何连接数据库
,使之可以global于其它地方.多谢了.
补充:/web-msg-sender/start_io.php原文中加入$inner_http_worker->onWorkerStart
片段
...
$sender_io->on('workerStart', function(){
$inner_http_worker = new Worker('http://0.0.0.0:2121');
//新增开始
$inner_http_worker->onWorkerStart = function($inner_http_worker){
//数据库初始化,在其余地方都是服务使用$db;似乎onWorkerStart无法触发
global $db;
$db = new Workerman\MySQL\Connection('127.0.0.1', '3306', 'test', 'test', 'test');
};
//新增结束
//其余地方都引用不了$db
$inner_http_worker->onMessage = function($http_connection, $data){
global $uidConnectionMap,$db;//比如这里$db就是null
$_POST = $_POST ? $_POST : $_GET;
switch(@$_POST){
case 'publish':
global $sender_io;
$to = @$_POST;
$_POST = htmlspecialchars(@$_POST);
...
用的时候没加global吧
代码本身没有问题
报错和代码都贴出来看看?
就是web-msg-sender/start_io.php中加提问中的代码,然后在别的地方就引用不了$db;代码没有改动.我补充下问题
应该是这样。
onWorkerstart是子进程启动后的回调,然后$inner_http_worker是在onWorkerStart时创建的,这个$inner_http_worker不会再创建新的进程,所以$inner_http_worker->onWorkerStart不会执行到,所以db都是空的。
原来这样,一会儿试一下,多谢解惑.我之前琢磨之后也是这样解决了,不过由于还不熟悉 workerman 所以想问清楚 谢了.
再请教一下,前端
socket.emit('login', 'a')
,并且这个用户加入多个分组:$socket->join('a'),$socket->join('b'),$socket->join('c');
,这样子的话$sender_io->to('a')
固然是可以的,但to('b')的时候就会出现能发送给用户,但提示offline,这种加入多组后,给分组发送提示offline的情形应该怎么办呢.学习了,还是要老大出马啊
请问楼主:
启动workerman后,前端调用的时候报错:Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'
这个问题有遇到过吗