| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 | <?phpnamespace App\Home\Controllers;use Storage;use App\Http\Controllers\Controller;use App\Model\Question;use App\Model\Option;use App\Jobs\Robot;use GuzzleHttp\Client;use GuzzleHttp\Cookie\CookieJar;class IndexController extends Controller{	public function importTimu1()	{        set_time_limit(0);        $txt = Storage::get('1.txt');        $txt_arr = explode("\n", $txt);        foreach ($txt_arr as $k => $val) {            $q_a = explode('?', $val);            $str1 = preg_replace('/^\d/i','',$q_a[0], 1);            $str2 = preg_replace('/^\d/i','',$str1, 1);            $title =  preg_replace('/^\d/i','',$str2, 1);            $question_id = Question::insertGetId([                "title" => $title . "?",                "is_released" => 1,                "created_at" => date('Y-m-d H:i:s'),                "updated_at" => date('Y-m-d H:i:s'),            ]);            $optiion = mb_substr($q_a[1], 0, -4);            //答案            $answer = mb_substr($q_a[1], -4);            $answer = mb_substr($answer, 1,1);            // echo $optiion;            // echo mb_strpos($optiion, 'B');            $o_answer = 0;            if(mb_strpos($optiion, 'A')){                $optiion_A = mb_substr($optiion, mb_strpos($optiion, 'A') + 1, mb_strpos($optiion, 'B') - mb_strpos($optiion, 'A') - 1);            }else{                $optiion_A = mb_substr($optiion, 0 ,mb_strpos($optiion, 'B') - 1);            }            if($answer == 'A'){                $o_answer = 1;            }            Option::insert([                "title" => $optiion_A,                "is_answer" => $o_answer,                "question_id" => $question_id,                "created_at" => date('Y-m-d H:i:s'),                "updated_at" => date('Y-m-d H:i:s'),            ]);            $o_answer = 0;            if(mb_strpos($optiion, 'C')){                $option_B = mb_substr($optiion, mb_strpos($optiion, 'B') + 1, mb_strpos($optiion, 'C') - mb_strpos($optiion, 'B') - 1);                if($answer == 'B'){                    $o_answer = 1;                }                Option::insert([                    "title" => $option_B,                    "is_answer" => $o_answer,                    "question_id" => $question_id,                    "created_at" => date('Y-m-d H:i:s'),                    "updated_at" => date('Y-m-d H:i:s'),                ]);                $o_answer = 0;            }elseif(mb_strpos($optiion, 'B')){                echo $option_B = mb_substr($optiion, mb_strpos($optiion, 'B') + 1);                if($answer == 'B'){                    $o_answer = 1;                }                Option::insert([                    "title" => $option_B,                    "is_answer" => $o_answer,                    "question_id" => $question_id,                    "created_at" => date('Y-m-d H:i:s'),                    "updated_at" => date('Y-m-d H:i:s'),                ]);                $o_answer = 0;                            }            if(mb_strpos($optiion, 'D')){                $option_C = mb_substr($optiion, mb_strpos($optiion, 'C') + 1, mb_strpos($optiion, 'D') - mb_strpos($optiion, 'C') - 1);                if($answer == 'C'){                    $o_answer = 1;                }                Option::insert([                    "title" => $option_C,                    "is_answer" => $o_answer,                    "question_id" => $question_id,                    "created_at" => date('Y-m-d H:i:s'),                    "updated_at" => date('Y-m-d H:i:s'),                ]);                $o_answer = 0;            }elseif(mb_strpos($optiion, 'C')){                echo $option_C = mb_substr($optiion, mb_strpos($optiion, 'C') + 1);                if($answer == 'C'){                    $o_answer = 1;                }                Option::insert([                    "title" => $option_C,                    "is_answer" => $o_answer,                    "question_id" => $question_id,                    "created_at" => date('Y-m-d H:i:s'),                    "updated_at" => date('Y-m-d H:i:s'),                ]);                $o_answer = 0;            }            if(mb_strpos($optiion, 'E')){                $option_D = mb_substr($optiion, mb_strpos($optiion, 'D') + 1, mb_strpos($optiion, 'E') - mb_strpos($optiion, 'D') - 1);                if($answer == 'B'){                    $o_answer = 1;                }                Option::insert([                    "title" => $option_D,                    "is_answer" => $o_answer,                    "question_id" => $question_id,                    "created_at" => date('Y-m-d H:i:s'),                    "updated_at" => date('Y-m-d H:i:s'),                ]);                $o_answer = 0;            }elseif(mb_strpos($optiion, 'D')){                $option_D = mb_substr($optiion, mb_strpos($optiion, 'D') + 1);                if($answer == 'D'){                    $o_answer = 1;                }                Option::insert([                    "title" => $option_D,                    "is_answer" => $o_answer,                    "question_id" => $question_id,                    "created_at" => date('Y-m-d H:i:s'),                    "updated_at" => date('Y-m-d H:i:s'),                ]);                $o_answer = 0;            }        }	}    public function importTimu()    {        set_time_limit(0);        $text = Storage::get('timu.json');        $questions = json_decode($text);        dump($questions);        $answer_ex = [            "A" => 1,            "B" => 2,            "C" => 3,            "D" => 4,            "E" => 5,            "F" => 6,            "G" => 7,        ];        foreach ($questions as $k => $ques) {            $question_id = Question::insertGetId([                "title" => $ques->title,                "is_released" => 1,                "created_at" => date('Y-m-d H:i:s'),                "updated_at" => date('Y-m-d H:i:s'),            ]);            //判断答案            foreach ($ques->options as $sk => $op) {                if($answer_ex[$ques->answer] - 1 == $sk){                    $is_answer = 1;                }else{                    $is_answer = 0;                }                Option::insert([                    "title" => $op,                    "is_answer" => $is_answer,                    "question_id" => $question_id,                    "created_at" => date('Y-m-d H:i:s'),                    "updated_at" => date('Y-m-d H:i:s'),                ]);            }            echo "{$ques->title} 已入库";        }    }    /**     * 测试加入队列     */    public function putJob()    {        dump(Robot::dispatch()->onQueue('robot'));    }    /**     * 测试机器人     */    // public function robot()    // {    //     $client = new Client([    //         'base_uri' => 'http://183.234.61.252:8090',    //         'timeout'  => 2.0,    //         'cookies' => true,    //         'verify' => false,    //     ]);     //     $worker = new Worker('websocket://183.234.61.252:8282');            //     $worker->onMessage = function($ws_connection, $message)    //     {    //         //$client->request('POST');    //         // 与远程task服务建立异步连接,ip为远程task服务的ip,如果是本机就是127.0.0.1,如果是集群就是lvs的ip    //         $task_connection = new AsyncTcpConnection('Text://127.0.0.1:12345');    //         // 任务及参数数据    //         $task_data = array(    //             'function' => 'send_mail',    //             'args'       => array('from'=>'xxx', 'to'=>'xxx', 'contents'=>'xxx'),    //         );    //         // 发送数据    //         $task_connection->send(json_encode($task_data));    //         // 异步获得结果    //         $task_connection->onMessage = function($task_connection, $task_result)use($ws_connection)    //         {    //              // 结果    //              var_dump($task_result);    //              // 获得结果后记得关闭异步连接    //              $task_connection->close();    //              // 通知对应的websocket客户端任务完成    //              $ws_connection->send('task complete');    //         };    //         // 执行异步连接    //         $task_connection->connect();    //     }    //     Worker::runAll();    // }}
 |