web-msg-sender中怎么使用Workerman/MySQL?$db连不上是怎么回事呢?

我在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['type']){
case 'publish':
global $sender_io;
$to = @$_POST['to'];
$_POST['content'] = htmlspecialchars(@$_POST['content']);
...
已邀请:

walkor

赞同来自: amhoho

    $sender_io->on('workerStart', function(){
global $db;
$db = new Workerman\MySQL\Connection('127.0.0.1', '3306', 'test', 'test', 'test');
});

应该是这样。
onWorkerstart是子进程启动后的回调,然后$inner_http_worker是在onWorkerStart时创建的,这个$inner_http_worker不会再创建新的进程,所以$inner_http_worker->onWorkerStart不会执行到,所以db都是空的。

xiuwang

赞同来自:

用的时候没加global吧

xiuwang

赞同来自:

学习了,还是要老大出马啊

henry - 小程序

赞同来自:

请问楼主:
启动workerman后,前端调用的时候报错:Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'
这个问题有遇到过吗

要回复问题请先登录注册