onWorkerStart = function($ws_worker) { // 将db实例存储在全局变量中(也可以存储在某类的静态成员中) global $websocketDB; $websocketDB = new \Workerman\MySQL\Connection('rm-wz98r5cn33zq4ou980o.mysql.rds.aliyuncs.com', '3306', 'lampmanager', 'lampmanager@2019', 'lampmanager'); Timer::add(0.5, function()use($ws_worker){ // global $clientArr; global $websocketDB; $connections = $ws_worker->connections; // var_dump($connections); $data = $websocketDB->select('id,client,msg')->from('message')->query(); if (!empty($data)) { foreach ($data as $v) { if (!empty($connections[$v['client']])) $connections[$v['client']]->send($v['msg']); $websocketDB->query("DELETE FROM `message` WHERE id='{$v['id']}'"); } } }); }; // 启动1个进程对外提供服务 $ws_worker->count = 1; // 客户端连接回调 $ws_worker->onConnect = function($connection) { // global $clientArr; // 标记连接的客户端 // $key=uniqid(); $key = $connection->id; $data = array('status'=>'0000','msg'=>'操作成功','data'=>['clientid'=>$key,'status'=>1]); $connection->send(json_encode($data)); // $clientArr[$key] = $connection; }; // 客户端断开连接 // $ws_worker->onClose = function($connection) // { // global $clientArr; // if (!empty($clientArr)) { // foreach ($clientArr as $k => $v) { // if ($v == $connection) { // unset($clientArr[$k]); // break; // } // } // } // }; // 运行worker Worker::runAll();