我在web-sender中此處引入了之后,在其它地方例如on('connection'均無法獲得該$db, 請教一下sender應(yīng)該如何連接數(shù)據(jù)庫
,使之可以global于其它地方.多謝了.
補(bǔ)充:/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){
//數(shù)據(jù)庫初始化,在其余地方都是服務(wù)使用$db;似乎onWorkerStart無法觸發(fā)
global $db;
$db = new Workerman\MySQL\Connection('127.0.0.1', '3306', 'test', 'test', 'test');
};
//新增結(jié)束
//其余地方都引用不了$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);
...
$sender_io->on('workerStart', function(){
global $db;
$db = new Workerman\MySQL\Connection('127.0.0.1', '3306', 'test', 'test', 'test');
});
應(yīng)該是這樣。
onWorkerstart是子進(jìn)程啟動后的回調(diào),然后$inner_http_worker是在onWorkerStart時創(chuàng)建的,這個$inner_http_worker不會再創(chuàng)建新的進(jìn)程,所以$inner_http_worker->onWorkerStart不會執(zhí)行到,所以db都是空的。
再請教一下,前端socket.emit('login', 'a')
,并且這個用戶加入多個分組:$socket->join('a'),$socket->join('b'),$socket->join('c');
,這樣子的話$sender_io->to('a')
固然是可以的,但to('b')的時候就會出現(xiàn)能發(fā)送給用戶,但提示offline,這種加入多組后,給分組發(fā)送提示offline的情形應(yīng)該怎么辦呢.
請問樓主:
啟動workerman后,前端調(diào)用的時候報錯:Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'
這個問題有遇到過嗎