Exemplo n.º 1
0
        public void InitDataMethod(object sessionIdObj)
        {
            try
            {
                string   sessionId = sessionIdObj.ToString();
                DateTime startTime = DateTime.Now;

                string format = @"INSERT INTO `log` (`date`, `thread`, `level`, `logger`, `message`, `userid`, `enable`) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}');";

                int num = 1 * 100 * 10000; //记录条数

                TaskStatusResult taskStatus = new TaskStatusResult()
                {
                    HandledNum = 0, StatusDesc = "执行中...", TotalNum = num
                };
                TaskStatusResult.TaskList[sessionId] = taskStatus;

                StringBuilder buidler = new StringBuilder();
                int           count   = 1;
                var           time    = DateTime.Now.AddHours(1);
                bool          flag    = true;

                for (int i = 0; i < num; i++)
                {
                    if (i != 0 && i % 1000 == 0) // 每多少条提交一次
                    {
                        MySqlHelper.ExeTransaction(buidler.ToString());
                        taskStatus.HandledNum = count;
                        TaskStatusResult.TaskList[sessionId] = taskStatus;
                        buidler.Clear();
                    }
                    buidler.Append(string.Format(format, time = time.AddSeconds(1), count, count, "logger", "message" + count, "user", flag ? 1 : 0));
                    count++;
                    flag = !flag;
                }

                if (buidler.ToString() != "")
                {
                    MySqlHelper.ExeTransaction(buidler.ToString());
                    taskStatus.HandledNum = count;
                    TaskStatusResult.TaskList[sessionId] = taskStatus;
                }

                taskStatus.StatusDesc = "执行结束";
                taskStatus.Msg        = $"数据录入完成。条数 {num} 用时: {(DateTime.Now - startTime).TotalSeconds} 秒";
            }
            catch (Exception ex)
            {
                //ViewBag.Msg = ex.Message;
            }
        }
Exemplo n.º 2
0
        private async Task ProcessWS(AspNetWebSocketContext arg)
        {
            WebSocket socket = arg.WebSocket;

            while (true)
            {
                ArraySegment <byte>    buffer = new ArraySegment <byte>(new byte[1024]);
                WebSocketReceiveResult result = await socket.ReceiveAsync(buffer, CancellationToken.None);

                if (socket.State == WebSocketState.Open)
                {
                    string message = Encoding.UTF8.GetString(buffer.Array, 0, result.Count);

                    if (message == "insertData")
                    {
                        try
                        {
                            DateTime startTime = DateTime.Now;

                            string format = @"INSERT INTO `log` (`date`, `thread`, `level`, `logger`, `message`, `userid`, `enable`) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}');";

                            int num = 1 * 100 * 10000; //记录条数

                            TaskStatusResult taskStatus = new TaskStatusResult()
                            {
                                HandledNum = 0, StatusDesc = "执行中...", TotalNum = num
                            };
                            buffer = new ArraySegment <byte>(Encoding.UTF8.GetBytes(taskStatus.StatusDesc));
                            await socket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None);

                            StringBuilder buidler = new StringBuilder();
                            int           count   = 1;
                            var           time    = DateTime.Now.AddHours(1);
                            bool          flag    = true;

                            for (int i = 0; i < num; i++)
                            {
                                if (i != 0 && i % 1000 == 0) // 每多少条提交一次
                                {
                                    MySqlHelper.ExeTransaction(buidler.ToString());
                                    taskStatus.HandledNum = count;
                                    buidler.Clear();
                                    buffer = new ArraySegment <byte>(Encoding.UTF8.GetBytes(taskStatus.HandledNum.ToString()));
                                    await socket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None);
                                }
                                buidler.Append(string.Format(format, time = time.AddSeconds(1), count, count, "logger", "message" + count, "user", flag ? 1 : 0));
                                count++;
                                flag = !flag;
                            }

                            if (buidler.ToString() != "")
                            {
                                MySqlHelper.ExeTransaction(buidler.ToString());
                                taskStatus.HandledNum = count;
                            }

                            taskStatus.StatusDesc = "执行结束";
                            taskStatus.Msg        = $"数据录入完成。条数 {num} 用时: {(DateTime.Now - startTime).TotalSeconds} 秒";
                        }
                        catch (Exception ex)
                        {
                            //ViewBag.Msg = ex.Message;
                        }
                    }

                    string returnMsg = GetReturnMsg(message);

                    buffer = new ArraySegment <byte>(Encoding.UTF8.GetBytes(returnMsg));
                    await socket.SendAsync(buffer, WebSocketMessageType.Text, true, CancellationToken.None);
                }
                else
                {
                    break;
                }
            }
        }
Exemplo n.º 3
0
 public void Status(TaskStatusResult result)
 {
 }