CmdTest.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019/5/21
  6. * Time: 16:57
  7. */
  8. namespace app\logic\cmdpro;
  9. use app\lib\DataPack;
  10. use app\lib\GlobConfigs;
  11. use app\logic\cmdpro\CmdInf as CmdInf;
  12. use app\logic\MyPgsql as MyPgsql;
  13. use swoole ;
  14. class CmdTest extends CmdInf
  15. {
  16. //异步回调实现 mysql
  17. public function sqlold($serv, $task)
  18. {
  19. $db = new \swoole_mysql();
  20. $config = GlobConfigs::getKey('mysql');
  21. $db->connect($config, function (\swoole_mysql $db, $r) use ($serv, $task) {
  22. if ($r === false) {
  23. $serv->push($task->data->fd, json_encode(['data' => $task->data, 'err' => [$db->connect_errno, $db->connect_error], 'fd' => $task->data->fd], 256));
  24. return false;
  25. }
  26. $packdata = json_decode($task->data->data, true);
  27. $sql = 'select * from bm_admin where admin_id=' . intval($packdata['data']);
  28. $db->query($sql, function (\swoole_mysql $db, $r2) use ($serv, $task) {
  29. if ($r2) {
  30. $serv->push($task->data->fd, json_encode(['record' => $r2, 'fd' => $task->data->fd], 256));
  31. }
  32. $db->close();
  33. });
  34. });
  35. }
  36. //协程实现mysql
  37. public function mysqlgo($serv, $task)
  38. {
  39. $swoole_mysql = new \Swoole\Coroutine\MySQL();
  40. $config = GlobConfigs::getKey('mysql');
  41. $swoole_mysql->connect($config);
  42. $Pack = json_decode($task->data->data, true);
  43. $DataArr = $Pack['data'];
  44. $table = isset($DataArr['table']) ? $DataArr['table'] : '';
  45. $field = isset($DataArr['field']) ? $DataArr['field'] : '';
  46. $value = isset($DataArr['value']) ? $DataArr['value'] : '';
  47. if (empty($task) || empty($field)) {
  48. return;
  49. }
  50. try {
  51. $ret = $swoole_mysql->query("select * from $table where $field='$value' ");
  52. if ($ret) {
  53. $this->sendTo($serv, $task->data->fd, DataPack::toJson(['data' => $ret]));
  54. }
  55. } catch (\Exception $e) {
  56. echo "Exception:" . $e->getCode() . ' - ' . $e->getMessage();
  57. }
  58. $swoole_mysql->close();
  59. }
  60. //协程redis
  61. public function redis($serv, $task)
  62. {
  63. $config = GlobConfigs::getKey('redis');
  64. go(function () use ($serv, $task, $config) {
  65. $redis = new \Swoole\Coroutine\Redis();
  66. $redis->connect($config['host'], $config['port']);
  67. $redis->set('test', date('Y-m-d H:i:s'));
  68. $val = $redis->get('test');
  69. $this->sendTo($serv, $task->data->fd, DataPack::toJson(['data' => $val]));
  70. });
  71. }
  72. public function broad($serv, $task)
  73. {
  74. $pack = json_decode($task->data->data, true);
  75. $msg = $pack['data'];
  76. $this->onlineBroad($serv, $msg . ' ' . $this->dotest());
  77. }
  78. public function dotick($serv, $task)
  79. {
  80. $pack = json_decode($task->data->data, true);
  81. $data = $pack['data'];
  82. $fid = isset($data['fid']) ? intval($data['fid']) : 0;
  83. $msg = isset($data['msg']) ? $data['msg'] : '';
  84. if (!$serv->exist($fid)) {
  85. $this->sendTo($serv, $task->data->fd, '此用户不在线!' . $fid);
  86. return;
  87. }
  88. if ($fid == $task->data->fd) {
  89. $this->sendTo($serv, $task->data->fd, '自己不能踢自己!');
  90. return;
  91. }
  92. $this->sendTo($serv, $fid, $msg);
  93. $serv->disconnect($fid);
  94. return;
  95. }
  96. //时间同步用
  97. public function timeRsync($serv,$task){
  98. $dataArr = json_decode($task->data->data,true);
  99. $msg = DataPack::toJson(['mtype'=>'system_msg','stype'=>'TimeSync','data'=>$dataArr['data']]);
  100. $this->onlineBroad($serv,$msg);
  101. return ;
  102. }
  103. public function pgsql($serv,$task){
  104. $dataArr = json_decode($task->data->data,true);
  105. $config = GlobConfigs::getKey('pgsql');
  106. go(function () use ($serv, $task, $config,$dataArr) {
  107. $conf = $config ;
  108. $mysql = new Capsule();
  109. $mysql->addConnection($conf);
  110. $mysql->setAsGlobal();
  111. $mysql->bootEloquent();
  112. $ret = DB::table('account')->where('id',83859)->first();
  113. $this->sendTo($serv, $task->data->fd, DataPack::toJson(['mtype'=>'system','data'=>$ret]));
  114. });
  115. }
  116. public function pgsqlquery($serv,$task){
  117. $dataArr = json_decode($task->data->data,true);
  118. $ret = MyPgsql::getInstance()->getDb()->table('members')->where('id',intval($dataArr['data']))->first();
  119. $this->sendTo($serv, $task->data->fd, DataPack::toJson(['mtype'=>'system','data'=>$ret]));
  120. }
  121. public function pgsqlexec($serv,$task){
  122. $dataArr = json_decode($task->data->data,true);
  123. $ret = MyPgsql::getInstance()->getDb()->table('members')->where('id',57)->update(['name'=>'12-'.$dataArr['data']]);
  124. $this->sendTo($serv, $task->data->fd, DataPack::toJson(['mtype'=>'system','data'=>$ret]));
  125. }
  126. private function dotest()
  127. {
  128. return " hellow,baby,at " . date("Y-m-d H:i:s");
  129. }
  130. }