CmdTest.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  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 Illuminate\Database\Capsule\Manager as Capsule;
  13. use Illuminate\Database\Capsule\Manager as DB;
  14. use app\logic\MyPgsql as MyPgsql;
  15. use swoole;
  16. class CmdTest extends CmdInf
  17. {
  18. static $pgsqlObj = '';
  19. //异步回调实现 mysql
  20. public function sqlold($serv, $task)
  21. {
  22. $db = new \swoole_mysql();
  23. $config = GlobConfigs::getKey('mysql');
  24. $db->connect($config, function (\swoole_mysql $db, $r) use ($serv, $task) {
  25. if ($r === false) {
  26. $serv->push($task->data->fd, json_encode(['data' => $task->data, 'err' => [$db->connect_errno, $db->connect_error], 'fd' => $task->data->fd], 256));
  27. return false;
  28. }
  29. $packdata = json_decode($task->data->data, true);
  30. $sql = 'select * from bm_admin where admin_id=' . intval($packdata['data']);
  31. $db->query($sql, function (\swoole_mysql $db, $r2) use ($serv, $task) {
  32. if ($r2) {
  33. $serv->push($task->data->fd, json_encode(['record' => $r2, 'fd' => $task->data->fd], 256));
  34. }
  35. $db->close();
  36. });
  37. });
  38. }
  39. //协程实现mysql
  40. public function mysqlgo($serv, $task)
  41. {
  42. $swoole_mysql = new \Swoole\Coroutine\MySQL();
  43. $config = GlobConfigs::getKey('mysql');
  44. $swoole_mysql->connect($config);
  45. $Pack = json_decode($task->data->data, true);
  46. $DataArr = $Pack['data'];
  47. $table = isset($DataArr['table']) ? $DataArr['table'] : '';
  48. $field = isset($DataArr['field']) ? $DataArr['field'] : '';
  49. $value = isset($DataArr['value']) ? $DataArr['value'] : '';
  50. if (empty($task) || empty($field)) {
  51. return;
  52. }
  53. try {
  54. $ret = $swoole_mysql->query("select * from $table where $field='$value' ");
  55. if ($ret) {
  56. $this->sendTo($serv, $task->data->fd, DataPack::toJson(['data' => $ret]));
  57. }
  58. } catch (\Exception $e) {
  59. echo "Exception:" . $e->getCode() . ' - ' . $e->getMessage();
  60. }
  61. $swoole_mysql->close();
  62. }
  63. //协程redis
  64. public function redis($serv, $task)
  65. {
  66. $config = GlobConfigs::getKey('redis');
  67. go(function () use ($serv, $task, $config) {
  68. $redis = new \Swoole\Coroutine\Redis();
  69. $redis->connect($config['host'], $config['port']);
  70. $redis->set('test', date('Y-m-d H:i:s'));
  71. $val = $redis->get('test');
  72. $this->sendTo($serv, $task->data->fd, DataPack::toJson(['data' => $val]));
  73. });
  74. }
  75. public function broad($serv, $task)
  76. {
  77. $pack = json_decode($task->data->data, true);
  78. $msg = $pack['data'];
  79. $this->onlineBroad($serv, $msg . ' ' . $this->dotest());
  80. }
  81. public function dotick($serv, $task)
  82. {
  83. $pack = json_decode($task->data->data, true);
  84. $data = $pack['data'];
  85. $fid = isset($data['fid']) ? intval($data['fid']) : 0;
  86. $msg = isset($data['msg']) ? $data['msg'] : '';
  87. if (!$serv->exist($fid)) {
  88. $this->sendTo($serv, $task->data->fd, '此用户不在线!' . $fid);
  89. return;
  90. }
  91. if ($fid == $task->data->fd) {
  92. $this->sendTo($serv, $task->data->fd, '自己不能踢自己!');
  93. return;
  94. }
  95. $this->sendTo($serv, $fid, $msg);
  96. $serv->disconnect($fid);
  97. return;
  98. }
  99. //时间同步用
  100. public function timeRsync($serv, $task)
  101. {
  102. $dataArr = json_decode($task->data->data, true);
  103. $msg = DataPack::toJson(['mtype' => 'system_msg', 'stype' => 'TimeSync', 'data' => $dataArr['data']]);
  104. $this->onlineBroad($serv, $msg);
  105. return;
  106. }
  107. public function pgsql($serv, $task)
  108. {
  109. $dataArr = json_decode($task->data->data, true);
  110. $config = GlobConfigs::getKey('pgsql');
  111. go(function () use ($serv, $task, $config, $dataArr) {
  112. $conf = $config;
  113. $mysql = new Capsule();
  114. $mysql->addConnection($conf);
  115. $mysql->setAsGlobal();
  116. $mysql->bootEloquent();
  117. $ret = DB::table('account')->where('id', 83859)->first();
  118. $this->sendTo($serv, $task->data->fd, DataPack::toJson(['mtype' => 'system', 'data' => $ret]));
  119. });
  120. }
  121. public function pgsqlquery($serv, $task)
  122. {
  123. $dataArr = json_decode($task->data->data, true);
  124. $ret = MyPgsql::getInstance()->getDb()->table('members')->where('id', intval($dataArr['data']))->first();
  125. $this->sendTo($serv, $task->data->fd, DataPack::toJson(['mtype' => 'system', 'data' => $ret]));
  126. }
  127. public function pgsqlexec($serv, $task)
  128. {
  129. $dataArr = json_decode($task->data->data, true);
  130. $ret = MyPgsql::getInstance()->getDb()->table('members')->where('id', 57)->update(['name' => '12-' . $dataArr['data']]);
  131. $this->sendTo($serv, $task->data->fd, DataPack::toJson(['mtype' => 'system', 'data' => $ret]));
  132. }
  133. private function dotest()
  134. {
  135. return " hellow,baby,at " . date("Y-m-d H:i:s");
  136. }
  137. public function odds($serv, $task)
  138. {
  139. echo "进来了。。。。。。。。。。。。。。。。。。\n";
  140. $now = microtime(true);
  141. $datas = json_decode($task->data->data, true)['data'];
  142. print_r($datas);
  143. echo "Cost: " . (microtime(true) - $now) * 1000 . " 毫秒\r\n";
  144. $pgsql = $this->getPgsqlObj();
  145. $ret1 = DB::table("st_zq_local_league")->where(['others_lg_id'=>138112,'source'=>'hg0088'])->first();
  146. $ret2 = DB::table("st_zq_local_match")->where(['others_match_id'=>3246051,'source'=>'hg3535'])->first();
  147. if (!$ret1 || !$ret2){
  148. echo "数据有错,返回..\n";
  149. return ;
  150. }
  151. $ret3 = DB::table("st_zq_league")->where(['id'=>$ret1->lg_id])->first();
  152. $ret4 = DB::table("st_zq_odds")->where(['odds_only'=>'41b995867e606e7bdea634d26d82a69b'])->first();
  153. $ret5 = DB::table("st_zq_odds")->where(['odds_only'=>'41b995867e606e7bdea634d26d82a69b'])->update(['ctime'=>date("Y-m-d H:i:s")]);
  154. print_r([$ret1,$ret2,$ret3,$ret4,$ret5]);
  155. echo "Cost: " . (microtime(true) - $now) * 1000 . " 毫秒\r\n";
  156. }
  157. private function getPgsqlObj()
  158. {
  159. if (self::$pgsqlObj == '') {
  160. echo '重建getPgsqlObj......'."\n";
  161. $config = GlobConfigs::getKey('pgsql');
  162. $mysql = new Capsule();
  163. $mysql->addConnection($config);
  164. $mysql->setAsGlobal();
  165. $mysql->bootEloquent();
  166. self::$pgsqlObj = $mysql;
  167. return $mysql;
  168. }
  169. echo '直接返回 getPgsqlObj......'."\n";
  170. return self::$pgsqlObj;
  171. }
  172. }