| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | <?phpuse Workerman\Worker;require_once __DIR__ . '/Autoloader.php';require_once './Lib/mysql/src/Connection.php';use \Workerman\Lib\Timer;$ws_worker = new Worker("websocket://0.0.0.0:8888");// global $clientArr;// $clientArr =[];$ws_worker->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;//     		}//     	}//     }// };// 运行workerWorker::runAll();
 |