IndexController.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. <?php
  2. namespace App\Home\Controllers;
  3. use Storage;
  4. use App\Http\Controllers\Controller;
  5. use App\Model\Question;
  6. use App\Model\Option;
  7. use App\Jobs\Robot;
  8. use GuzzleHttp\Client;
  9. use GuzzleHttp\Cookie\CookieJar;
  10. class IndexController extends Controller
  11. {
  12. public function importTimu()
  13. {
  14. set_time_limit(0);
  15. $txt = Storage::get('1.txt');
  16. $txt_arr = explode("\n", $txt);
  17. foreach ($txt_arr as $k => $val) {
  18. $q_a = explode('?', $val);
  19. $str1 = preg_replace('/^\d/i','',$q_a[0], 1);
  20. $str2 = preg_replace('/^\d/i','',$str1, 1);
  21. $title = preg_replace('/^\d/i','',$str2, 1);
  22. $question_id = Question::insertGetId([
  23. "title" => $title . "?",
  24. "is_released" => 1,
  25. "created_at" => date('Y-m-d H:i:s'),
  26. "updated_at" => date('Y-m-d H:i:s'),
  27. ]);
  28. $optiion = mb_substr($q_a[1], 0, -4);
  29. //答案
  30. $answer = mb_substr($q_a[1], -4);
  31. $answer = mb_substr($answer, 1,1);
  32. // echo $optiion;
  33. // echo mb_strpos($optiion, 'B');
  34. $o_answer = 0;
  35. if(mb_strpos($optiion, 'A')){
  36. $optiion_A = mb_substr($optiion, mb_strpos($optiion, 'A') + 1, mb_strpos($optiion, 'B') - mb_strpos($optiion, 'A') - 1);
  37. }else{
  38. $optiion_A = mb_substr($optiion, 0 ,mb_strpos($optiion, 'B') - 1);
  39. }
  40. if($answer == 'A'){
  41. $o_answer = 1;
  42. }
  43. Option::insert([
  44. "title" => $optiion_A,
  45. "is_answer" => $o_answer,
  46. "question_id" => $question_id,
  47. "created_at" => date('Y-m-d H:i:s'),
  48. "updated_at" => date('Y-m-d H:i:s'),
  49. ]);
  50. $o_answer = 0;
  51. if(mb_strpos($optiion, 'C')){
  52. $option_B = mb_substr($optiion, mb_strpos($optiion, 'B') + 1, mb_strpos($optiion, 'C') - mb_strpos($optiion, 'B') - 1);
  53. if($answer == 'B'){
  54. $o_answer = 1;
  55. }
  56. Option::insert([
  57. "title" => $option_B,
  58. "is_answer" => $o_answer,
  59. "question_id" => $question_id,
  60. "created_at" => date('Y-m-d H:i:s'),
  61. "updated_at" => date('Y-m-d H:i:s'),
  62. ]);
  63. $o_answer = 0;
  64. }elseif(mb_strpos($optiion, 'B')){
  65. echo $option_B = mb_substr($optiion, mb_strpos($optiion, 'B') + 1);
  66. if($answer == 'B'){
  67. $o_answer = 1;
  68. }
  69. Option::insert([
  70. "title" => $option_B,
  71. "is_answer" => $o_answer,
  72. "question_id" => $question_id,
  73. "created_at" => date('Y-m-d H:i:s'),
  74. "updated_at" => date('Y-m-d H:i:s'),
  75. ]);
  76. $o_answer = 0;
  77. }
  78. if(mb_strpos($optiion, 'D')){
  79. $option_C = mb_substr($optiion, mb_strpos($optiion, 'C') + 1, mb_strpos($optiion, 'D') - mb_strpos($optiion, 'C') - 1);
  80. if($answer == 'C'){
  81. $o_answer = 1;
  82. }
  83. Option::insert([
  84. "title" => $option_C,
  85. "is_answer" => $o_answer,
  86. "question_id" => $question_id,
  87. "created_at" => date('Y-m-d H:i:s'),
  88. "updated_at" => date('Y-m-d H:i:s'),
  89. ]);
  90. $o_answer = 0;
  91. }elseif(mb_strpos($optiion, 'C')){
  92. echo $option_C = mb_substr($optiion, mb_strpos($optiion, 'C') + 1);
  93. if($answer == 'C'){
  94. $o_answer = 1;
  95. }
  96. Option::insert([
  97. "title" => $option_C,
  98. "is_answer" => $o_answer,
  99. "question_id" => $question_id,
  100. "created_at" => date('Y-m-d H:i:s'),
  101. "updated_at" => date('Y-m-d H:i:s'),
  102. ]);
  103. $o_answer = 0;
  104. }
  105. if(mb_strpos($optiion, 'E')){
  106. $option_D = mb_substr($optiion, mb_strpos($optiion, 'D') + 1, mb_strpos($optiion, 'E') - mb_strpos($optiion, 'D') - 1);
  107. if($answer == 'B'){
  108. $o_answer = 1;
  109. }
  110. Option::insert([
  111. "title" => $option_D,
  112. "is_answer" => $o_answer,
  113. "question_id" => $question_id,
  114. "created_at" => date('Y-m-d H:i:s'),
  115. "updated_at" => date('Y-m-d H:i:s'),
  116. ]);
  117. $o_answer = 0;
  118. }elseif(mb_strpos($optiion, 'D')){
  119. $option_D = mb_substr($optiion, mb_strpos($optiion, 'D') + 1);
  120. if($answer == 'D'){
  121. $o_answer = 1;
  122. }
  123. Option::insert([
  124. "title" => $option_D,
  125. "is_answer" => $o_answer,
  126. "question_id" => $question_id,
  127. "created_at" => date('Y-m-d H:i:s'),
  128. "updated_at" => date('Y-m-d H:i:s'),
  129. ]);
  130. $o_answer = 0;
  131. }
  132. }
  133. }
  134. /**
  135. * 测试加入队列
  136. */
  137. public function putJob()
  138. {
  139. dump(Robot::dispatch()->onQueue('robot'));
  140. }
  141. /**
  142. * 测试机器人
  143. */
  144. public function robot()
  145. {
  146. $client = new Client([
  147. 'base_uri' => 'http://183.234.61.252:8090',
  148. 'timeout' => 2.0,
  149. 'cookies' => true,
  150. 'verify' => false,
  151. ]);
  152. $worker = new Worker('websocket://183.234.61.252:8282');
  153. $worker->onMessage = function($ws_connection, $message)
  154. {
  155. //$client->request('POST');
  156. // 与远程task服务建立异步连接,ip为远程task服务的ip,如果是本机就是127.0.0.1,如果是集群就是lvs的ip
  157. $task_connection = new AsyncTcpConnection('Text://127.0.0.1:12345');
  158. // 任务及参数数据
  159. $task_data = array(
  160. 'function' => 'send_mail',
  161. 'args' => array('from'=>'xxx', 'to'=>'xxx', 'contents'=>'xxx'),
  162. );
  163. // 发送数据
  164. $task_connection->send(json_encode($task_data));
  165. // 异步获得结果
  166. $task_connection->onMessage = function($task_connection, $task_result)use($ws_connection)
  167. {
  168. // 结果
  169. var_dump($task_result);
  170. // 获得结果后记得关闭异步连接
  171. $task_connection->close();
  172. // 通知对应的websocket客户端任务完成
  173. $ws_connection->send('task complete');
  174. };
  175. // 执行异步连接
  176. $task_connection->connect();
  177. }
  178. Worker::runAll();
  179. }
  180. }