CN107147706A - 数据导出方法及装置 - Google Patents
数据导出方法及装置 Download PDFInfo
- Publication number
- CN107147706A CN107147706A CN201710283281.XA CN201710283281A CN107147706A CN 107147706 A CN107147706 A CN 107147706A CN 201710283281 A CN201710283281 A CN 201710283281A CN 107147706 A CN107147706 A CN 107147706A
- Authority
- CN
- China
- Prior art keywords
- data
- server
- write
- client
- thread
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/972—Access to data in other repository systems, e.g. legacy data or dynamic Web page generation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
- H04L67/145—Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据导出方法及装置,该装置包括:第一请求模块,用于启动轮询机制并向服务器发送数据导出请求;数据处理模块,用于启动数据写入线程并将数据写入线程的识别码返回至客户端;第二请求模块,用于根据轮训机制的间隔时间每隔间隔时间向服务器发送数据导出请求和识别码;查询模块,用于查询数据写入线程的执行状态并返回;判断模块,用于判断执行状态是否为写入完成;第三请求模块,用于在写入完成时,关闭轮训机制并向服务器发送数据下载请求;数据下载模块,用于将目标文件返回至客户端。与现有技术相比,本发明通过轮训机制每隔一定时间请求服务器,避免了导出大量数据时、客户端长时间得不到服务器响应而出现响应超时的问题。
Description
技术领域
本发明涉及web系统技术领域,尤其涉及一种数据导出方法及装置。
背景技术
对于大型的企业或者网络平台来说,常常有大量的数据报表需要进行传输,尤其是应用诸如ERP等数据平台的企业,用户常常需要将大量的数据以excel报表形式下载到本地机上进行后续处理。
目前客户端从服务器上导出数据时所采用的传输方式如图6所示:用户从自己的客户端向服务器发起请求,服务器在其内存中处理请求,根据请求查询数据库,将查询得到的数据项缓存在服务器的内存中,等待查询全部完成后服务器做出响应,将查询到的数据传送给用户的客户端。在此过程中,服务器获取大量数据的耗时较长,客户端可能由于长时间得不到响应而出现服务器响应超时异常、数据无法正常导出的问题;同时,由于所有的工作均在服务器的内存中完成,在数据量很大的时候,在内存中需要创建大量对象来缓存这些数据项,这时会引起可用内存减少,使得服务器的其他工作受到影响,在数据量过大的时候还有引起内存溢出(OOM)导致系统崩溃,严重影响用户体验。
因此,有必要提供一种数据导出方法及装置来解决上述技术问题。
发明内容
本发明的主要目的在于提出一种数据导出方法及装置,旨在解决从服务器导出大量数据时容易出现服务器响应超时的问题。
为实现上述目的,本发明提供一种数据导出装置,应用于web系统,所述web系统包括客户端和服务器,所述数据导出装置包括:
第一请求模块,用于在所述客户端接收到数据导出指令时,启动轮询机制并向所述服务器发送数据导出请求;
数据处理模块,用于使所述服务器根据所述数据导出请求启动数据写入线程以将待导出数据写入目标文件,并将所述数据写入线程的识别码返回至所述客户端;
第二请求模块,用于使所述客户端接收所述识别码并根据所述轮训机制的间隔时间每隔所述间隔时间向所述服务器发送所述数据导出请求和所述识别码;
查询模块,用于使所述服务器根据所述识别码查询相应的所述数据写入线程的执行状态并将所述执行状态返回至所述客户端;
判断模块,用于使所述客户端接收并判断所述执行状态是否为写入完成;
第三请求模块,用于在所述判断模块的判断结果为是时,关闭所述轮训机制并向所述服务器发送数据下载请求;
数据下载模块,用于使所述服务器根据所述数据下载请求将所述目标文件返回至所述客户端。
可选地,所述数据处理模块具体用于:
所述服务器根据所述数据导出请求启动数据写入线程;
所述数据写入线程将待导出数据以XML格式写入所述目标文件,其中所述目标文件为excel文件。
可选地,所述数据处理模块还用于:
所述数据写入线程分批次读取所述待导出数据并将读取到的所述待导出数据以XML格式写入所述目标文件。
可选地,所述数据导出装置还包括:
存储模块,用于使所述服务器将所述数据写入线程的识别码和执行状态写入存储单元。
可选地,所述数据下载模块具体用于:
所述服务器根据所述数据下载请求压缩所述目标文件;
将压缩后的所述目标文件返回至所述客户端。
相较于现有技术,本发明所提出的数据导出装置在客户端接收到数据导出指令时,启动轮询机制并向所述服务器发送数据导出请求,服务器根据所述数据导出请求启动数据写入线程并将所述数据写入线程的识别码返回至所述客户端,所述客户端接收所述识别码并根据所述轮训机制的间隔时间每隔所述间隔时间向所述服务器发送所述数据导出请求和所述识别码,然后所述服务器根据所述识别码查询相应的所述数据写入线程的执行状态并将所述执行状态返回至所述客户端,所述客户端接收并判断所述执行状态是否为写入完成,并在判断结果为是时,关闭所述轮训机制并向所述服务器发送数据下载请求,最后所述服务器根据所述数据下载请求将所述目标文件返回至所述客户端,通过轮训机制每隔一定时间请求服务器,避免了导出大量数据时、客户端长时间得不到服务器响应而出现响应超时的问题。
此外,为实现上述目的,本发明还提供一种数据导出方法,应用于web系统,所述web系统包括客户端和服务器,所述方法包括步骤:
所述客户端接收到数据导出指令时,启动轮询机制并向所述服务器发送数据导出请求;
所述服务器根据所述数据导出请求启动数据写入线程以将待导出数据写入目标文件,并将所述数据写入线程的识别码返回至所述客户端;
所述客户端接收所述识别码并根据所述轮训机制的间隔时间每隔所述间隔时间向所述服务器发送所述数据导出请求和所述识别码;
所述服务器根据所述识别码查询相应的所述数据写入线程的执行状态并将所述执行状态返回至所述客户端;
所述客户端接收并判断所述执行状态是否为写入完成,并在判断结果为是时,关闭所述轮训机制并向所述服务器发送数据下载请求;
所述服务器根据所述数据下载请求将所述目标文件返回至所述客户端。
可选地,所述服务器根据所述数据导出请求启动数据写入线程以将待导出数据写入目标文件的步骤具体为:
所述服务器根据所述数据导出请求启动数据写入线程;
所述数据写入线程将待导出数据以XML格式写入所述目标文件,其中所述目标文件为excel文件。
可选地,所述数据写入线程将待导出数据以XML格式写入所述目标文件的步骤具体为:
所述数据写入线程分批次读取所述待导出数据并将读取到的所述待导出数据以XML格式写入所述目标文件。
可选地,所述服务器根据所述数据导出请求启动数据写入线程以将待导出数据写入目标文件的步骤之后还包括:
所述服务器将所述数据写入线程的识别码和执行状态写入存储单元。
可选地,所述服务器根据所述数据下载请求将所述目标文件返回至所述客户端的步骤包括:
所述服务器根据所述数据下载请求压缩所述目标文件;
将压缩后的所述目标文件返回至所述客户端。
相较于现有技术,本发明所提出的数据导出方法在客户端接收到数据导出指令时,启动轮询机制并向所述服务器发送数据导出请求,服务器根据所述数据导出请求启动数据写入线程并将所述数据写入线程的识别码返回至所述客户端,所述客户端接收所述识别码并根据所述轮训机制的间隔时间每隔所述间隔时间向所述服务器发送所述数据导出请求和所述识别码,然后所述服务器根据所述识别码查询相应的所述数据写入线程的执行状态并将所述执行状态返回至所述客户端,所述客户端接收并判断所述执行状态是否为写入完成,并在判断结果为是时,关闭所述轮训机制并向所述服务器发送数据下载请求,最后所述服务器根据所述数据下载请求将所述目标文件返回至所述客户端,通过轮训机制每隔一定时间请求服务器,避免了导出大量数据时、客户端长时间得不到服务器响应而出现响应超时的问题。
附图说明
图1为本发明所述的数据导出装置第一实施例的功能模块示意图;
图2为本发明所述的数据导出装置第二实施例的功能模块示意图;
图3为本发明所述的数据导出方法第一实施例的实施流程示意图;
图4为本发明所述的数据导出方法第二实施例的实施流程示意图;
图5为本发明所述的数据导出方法一实施例的示意图;
图6为现有技术中客户端从服务器导出数据时一实施例的示意图。
附图标记:
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
现在将参考附图描述实现本发明所适用的web系统。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身并没有特定的意义。因此,“模块”与“部件”可以混合地使用。
Web(World Wide Web,也称WWW或万维网)是Internet上集文本、声音、动画、视频等多种媒体信息于一身的信息服务系统,它起源于1989年3月,由欧洲量子物理实验室CERN(the European Laboratory for Particle Physics)所发展出来的主从结构分布式超媒体系统。通过万维网,人们只要通过使用简单的方法,就可以很迅速方便地取得丰富的信息资料,由于用户在通过Web浏览器访问信息资源的过程中,无需再关心一些技术性的细节,而且界面非常友好,因而Web在Internet上一推出就受到了热烈的欢迎,走红全球,并迅速得到了爆炸性的发展。通常,整个web系统由web服务器(或web容器)、浏览器(Browser)及通信协议等3部分组成,当web浏览器(客户端)连接到web服务器上并请求文件时,web服务器将处理该请求并将文件反馈到该浏览器上,附带的信息会告诉浏览器如何查看该文件。
具体的,web服务器是指驻留于因特网上某种类型计算机的程序,常用的web服务器有微软的信息服务器(iis)和Apache。通俗的讲,Web服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用的方法。确切一点,Web服务器专门处理HTTP请求,但是应用程序服务器是通过很多协议来为应用程序提供商业逻辑。Web服务器可以解析HTTP协议,当Web服务器接收到一个HTTP请求,会返回一个HTTP响应,例如送回一个HTML页面。为了处理一个请求,Web服务器可以响应一个静态页面或图片,进行页面跳转,或者把动态响应的产生委托给一些其它的程序例如CGI脚本,JSP脚本,servlets,ASP脚本,服务器端JavaScript,或者一些其它的服务器端技术。无论它们(脚本)的目的如何,这些服务器端的程序通常产生一个HTML的响应来让浏览器可以浏览。
Web服务器的工作原理并不复杂,一般可分成如下4个步骤:连接过程、请求过程、应答过程以及关闭连接。下面对这4个步骤作一简单的介绍。连接过程就是Web服务器和其浏览器之间所建立起来的一种连接。查看连接过程是否实现,用户可以找到和打开socket这个虚拟文件,这个文件的建立意味着连接过程这一步骤已经成功建立。请求过程就是Web的浏览器运用socket这个文件向其服务器而提出各种请求。应答过程就是运用HTTP协议把在请求过程中所提出来的请求传输到Web的服务器,进而实施任务处理,然后运用HTTP协议把任务处理的结果传输到Web的浏览器,同时在Web的浏览器上面展示上述所请求之界面。关闭连接就是当上一个步骤--应答过程完成以后,Web服务器和其浏览器之间断开连接之过程。Web服务器上述4个步骤环环相扣、紧密相联,逻辑性比较强,可以支持多个进程、多个线程以及多个进程与多个线程相混合的技术。
基于上述web系统,提出本发明的数据导出方法及装置。
首先,本发明提出一种数据导出装置400,所述数据导出装置400应用于web系统,所述web系统包括客户端和服务器。
如图1所示,是本发明所述的数据导出装置400第一实施例的功能模块示意图。在本实施例中,所述数据导出装置400可以被分割成一个或多个模块,所述一个或多个模块被存储于存储器中,并由一个或多个控制器所执行,以完成本发明。例如,在图1中,所述数据导出装置400可以被分割成第一请求模块401、数据处理模块402、第二请求模块403、查询模块404、判断模块405、第三请求模块406以及数据下载模块407。其中本发明所称的模块是指一种能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述所述数据导出装置400的实现原理。以下将就上述各功能模块401-407的具体功能进行详细描述。
所述第一请求模块401,用于在所述客户端接收到数据导出指令时,启动轮询机制并向所述服务器发送数据导出请求。具体的,轮训机制是指客户端以一定的时间间隔向服务器发出请求,以频繁请求的方式来保持客户端和服务器的同步;对于本发明,客户端启动轮训机制是为了每隔一定时间间隔向服务器发送数据导出请求。
所述数据处理模块402,用于使所述服务器根据所述数据导出请求启动数据写入线程以将待导出数据写入目标文件,并将所述数据写入线程的识别码返回至所述客户端。本实施例中,目标文件为excel文件,即待导出数据以excel形式导出,且目标文件的初始内容为空。具体的,数据处理模块402具体用于实现:(1)所述服务器根据所述数据导出请求启动数据写入线程;即当服务器第一次接收到来自客户端的对某些数据的数据导出请求时,服务器会为这一请求启动一个数据写入线程,并将该数据写入线程的识别码返回至客户端;(2)所述数据写入线程将待导出数据以XML格式写入所述目标文件,其中XML格式的excel文件的写入速度较快,能够有效降低服务器B的响应时间。此外,每一数据写入线程均具有唯一的识别码,该识别码用于从服务器上的各个线程中找到相应的数据写入线程。优选的,本实施例中,该识别码为通用唯一识别码(Universally Unique Identifier,UUID),UUID是一个软件建构的标准,也是被开源软件基金会的组织应用在分布式计算环境领域的一部分。
所述第二请求模块403,用于使所述客户端接收所述识别码并根据所述轮训机制的间隔时间每隔所述间隔时间向所述服务器发送所述数据导出请求和所述识别码。
所述查询模块404,用于使所述服务器根据所述识别码查询相应的所述数据写入线程的执行状态并将所述执行状态返回至所述客户端。本实施例中,当服务器接收到来自客户端的数据导出请求和识别码时,服务器会根据该识别码查找对应的线程,本发明中服务器根据识别码可以查找到之前启动的数据写入线程,此时服务器获取数据写入线程的执行状态并反馈给客户端。其中,数据写入线程的执行状态包括正在写入(如表示为running)和写入完成(如表示为finish),该执行状态可以由预设的状态值来表示,如当执行状态为running时,其状态值记为0,当执行状态为finish时,其状态值记为1,服务器返回执行状态时是返回其状态值。此外,服务器中设置有存储单元redis,redis中存储有数据写入线程的通用唯一识别码UUID和执行状态(包括状态值)。
所述判断模块405,用于使所述客户端接收并判断所述执行状态是否为写入完成。具体的,客户端可以根据执行状态的状态值来判断执行状态是否为写入完成,本实施例中,当服务器返回的状态值为1时,表示执行状态为写入完成,此时客户端关闭轮训机制并向服务器发送数据下载请求。
所述第三请求模块406,用于在所述判断模块的判断结果为是时,关闭所述轮训机制并向所述服务器发送数据下载请求。
所述数据下载模块407,用于使所述服务器根据所述数据下载请求将所述目标文件返回至所述客户端。即当服务器接收到来自客户端的数据下载请求时,服务器将目标文件发送至客户端。
通过上述模块401-407,本发明数据导出装置在客户端接收到数据导出指令时,启动轮询机制并向所述服务器发送数据导出请求,服务器根据所述数据导出请求启动数据写入线程并将所述数据写入线程的识别码返回至所述客户端,所述客户端接收所述识别码并根据所述轮训机制的间隔时间每隔所述间隔时间向所述服务器发送所述数据导出请求和所述识别码,然后所述服务器根据所述识别码查询相应的所述数据写入线程的执行状态并将所述执行状态返回至所述客户端,所述客户端接收并判断所述执行状态是否为写入完成,并在判断结果为是时,关闭所述轮训机制并向所述服务器发送数据下载请求,最后所述服务器根据所述数据下载请求将所述目标文件返回至所述客户端,通过轮训机制每隔一定时间请求服务器,避免了导出大量数据时、客户端长时间得不到服务器响应而出现响应超时的问题。
基于上述第一实施例,提出本发明所述的数据导出装置400的第二实施例。在本实施例中,如图2所示,数据导出装置400还包括存储模块408。
本实施中,所述数据处理模块402具体用于:根据所述数据导出请求启动数据写入线程;所述数据写入线程分批次读取所述待导出数据并将读取到的所述待导出数据以XML格式写入所述目标文件,并将所述数据写入线程的识别码返回至所述客户端。请参考图5,图5为用户通过客户端A从服务器B中导出数据时一实施例的示意图,其中客户端A可以为移动终端、PC机、ipad等终端设备,当用户需要导出数据时,在客户端A上进行操作以发出数据导出指令给客户端A,当客户端A接收到数据导出指令时,启动轮训机制并向服务器发送数据导出请求。
所述存储模块408,用于使所述服务器将所述数据写入线程的识别码和执行状态写入存储单元。再请参考图5,本实施例中,存储单元为Redis,Redis中为该数据写入线程存储识别码UUID和执行状态(包括状态值)。
所述查询模块404,用于使所述服务器根据所述识别码查询相应的所述数据写入线程的执行状态并将所述执行状态返回至所述客户端。如图5所示,本实施例中,当服务器B接收到来自客户端A的数据导出请求和识别码时,服务器B会根据该识别码查找对应的线程,本发明中服务器B根据识别码可以查找到之前启动的数据写入线程,此时服务器B获取数据写入线程的执行状态并反馈给客户端。其中,数据写入线程的执行状态包括正在写入(如表示为running)和写入完成(如表示为finish),该执行状态可以由预设的状态值来表示,如当执行状态为running时,其状态值记为0,当执行状态为finish时,其状态值记为1,服务器返回执行状态时是返回其状态值。
所述数据下载模块407具体用于:(1)所述服务器根据所述数据下载请求压缩所述目标文件;(2)将压缩后的所述目标文件返回至所述客户端。本实施例中,将待导出数据以XML格式写入excel文件中,采用XML格式写入速度较快,同时XML格式的文件压缩率更高,进而客户端下载时速度更快。需要说明的是,本实施例中数据压缩的步骤在接收到数据下载请求时执行;而在实际应用中,该数据压缩步骤还可以由数据写入线程来执行,如图5所示,当数据写入完成后,直接将目标文件进行压缩,当服务器接收到客户端的数据下载请求时,直接将压缩后的目标文件返回至客户端,其中压缩后的目标以流的形式进行传输。
通过上述模块401至408,本发明所提出的数据导出装置在在接收到数据导出指令时,客户端根据数据写入线程的识别码采用轮训机制每隔预设的间隔时间请求服务器,避免了服务器响应超时的问题;同时,服务器将待导出数据以XML格式写入excel格式的目标文件中,并在数据写入完成时对目标文件进行压缩,其中XML格式的数据写入速度相比其他格式更快,且XML格式的文件压缩率更高,使得客户端下载数据时速度更快。
进一步地,本发明提出一种数据导出方法,该方法应用于web系统,所述web系统包括客户端和服务器。如图3所示,是本发明所述的数据导出方法第一实施例的实施流程图。在本实施例中,根据不同的需求,图3所示的流程图中的步骤的执行顺序可以改变,某些步骤可以省略。
步骤S501,客户端接收到数据导出指令时,启动轮询机制并向服务器发送数据导出请求。具体的,轮训机制是指客户端以一定的时间间隔向服务器发出请求,以频繁请求的方式来保持客户端和服务器的同步;对于本发明,客户端启动轮训机制是为了每隔一定时间间隔向服务器发送数据导出请求。
步骤S502,所述服务器根据所述数据导出请求启动数据写入线程以将待导出数据写入目标文件,并将所述数据写入线程的识别码返回至所述客户端。
本实施例中,目标文件为excel文件,即待导出数据以excel形式导出,且目标文件的初始内容为空。具体的,步骤S502包括以下步骤:(1)所述服务器根据所述数据导出请求启动数据写入线程;即当服务器第一次接收到来自客户端的对某些数据的数据导出请求时,服务器会为这一请求启动一个数据写入线程,并将该数据写入线程的识别码返回至客户端;(2)所述数据写入线程将待导出数据以XML格式写入所述目标文件,其中XML格式的excel文件的写入速度较快,能够有效降低服务器B的响应时间。此外,每一数据写入线程均具有唯一的识别码,该识别码用于从服务器上的各个线程中找到相应的数据写入线程。优选的,本实施例中,该识别码为通用唯一识别码(Universally Unique Identifier,UUID),UUID是一个软件建构的标准,也是被开源软件基金会的组织应用在分布式计算环境领域的一部分。
步骤S503,所述客户端根据所述轮训机制的间隔时间每隔所述间隔时间向所述服务器发送所述数据导出请求和所述识别码。
步骤S504,所述服务器根据所述识别码查询相应的所述数据写入线程的执行状态并将所述执行状态返回至所述客户端。
本实施例中,当服务器接收到来自客户端的数据导出请求和识别码时,服务器会根据该识别码查找对应的线程,本发明中服务器根据识别码可以查找到之前启动的数据写入线程,此时服务器获取数据写入线程的执行状态并反馈给客户端。其中,数据写入线程的执行状态包括正在写入(如表示为running)和写入完成(如表示为finish),该执行状态可以由预设的状态值来表示,如当执行状态为running时,其状态值记为0,当执行状态为finish时,其状态值记为1,服务器返回执行状态时是返回其状态值。此外,服务器中设置有存储单元redis,redis中存储有数据写入线程的通用唯一识别码UUID和执行状态(包括状态值)。
步骤S505,所述客户端接收并判断所述执行状态是否为写入完成,并在判断结果为是时,关闭所述轮训机制并向所述服务器发送数据下载请求。
具体的,客户端可以根据执行状态的状态值来判断执行状态是否为写入完成,本实施例中,当服务器返回的状态值为1时,表示执行状态为写入完成,此时客户端关闭轮训机制并向服务器发送数据下载请求。
步骤S506,所述服务器根据所述数据下载请求将所述目标文件返回至所述客户端。即当服务器接收到来自客户端的数据下载请求时,服务器将目标文件发送至客户端。
通过上述步骤S501-S506,本发明数据导出方法在客户端接收到数据导出指令时,启动轮询机制并向所述服务器发送数据导出请求,服务器根据所述数据导出请求启动数据写入线程并将所述数据写入线程的识别码返回至所述客户端,所述客户端接收所述识别码并根据所述轮训机制的间隔时间每隔所述间隔时间向所述服务器发送所述数据导出请求和所述识别码,然后所述服务器根据所述识别码查询相应的所述数据写入线程的执行状态并将所述执行状态返回至所述客户端,所述客户端接收并判断所述执行状态是否为写入完成,并在判断结果为是时,关闭所述轮训机制并向所述服务器发送数据下载请求,最后所述服务器根据所述数据下载请求将所述目标文件返回至所述客户端,通过轮训机制每隔一定时间请求服务器,避免了导出大量数据时、客户端长时间得不到服务器响应而出现响应超时的问题。
基于上述第一实施例,提出本发明所述的数据导出方法的第二实施例。
如图4所示,是本发明所述的数据导出方法第二实施例的实施流程图。在本实施例中,根据不同的需求,图4所示的流程图中的步骤的执行顺序可以改变,某些步骤可以省略。
步骤S601,客户端接收到数据导出指令时,启动轮询机制并向服务器发送数据导出请求。请参考图5,图5为用户通过客户端A从服务器B中导出数据时一实施例的示意图,其中客户端A可以为移动终端、PC机、ipad等终端设备,当用户需要导出数据时,在客户端A上进行操作以发出数据导出指令给客户端A,当客户端A接收到数据导出指令时,启动轮训机制并向服务器发送数据导出请求。
步骤S602,所述服务器根据所述数据导出请求启动数据写入线程。
步骤S603,所述数据写入线程分批次读取所述待导出数据并将读取到的所述待导出数据以XML格式写入所述目标文件,同时将所述数据写入线程的识别码和执行状态写入存储单元并将所述数据写入线程的识别码返回至所述客户端。如图5所示,本实施例中,存储单元为Redis,Redis中为该数据写入线程存储识别码UUID和执行状态(包括状态值)。
步骤S604,所述客户端根据所述轮训机制的间隔时间每隔所述间隔时间向所述服务器发送所述数据导出请求和所述识别码。如图5所示,客户端A接收到服务器B返回的识别码后,每隔间隔时间向服务器B发送一次数据导出请求和识别码,该间隔时间可以预先设置,如设置为5秒、10秒等。
步骤S605,所述服务器根据所述识别码查询相应的所述数据写入线程的执行状态并将所述执行状态返回至所述客户端。如图5所示,本实施例中,当服务器B接收到来自客户端A的数据导出请求和识别码时,服务器B会根据该识别码查找对应的线程,本发明中服务器B根据识别码可以查找到之前启动的数据写入线程,此时服务器B获取数据写入线程的执行状态并反馈给客户端。其中,数据写入线程的执行状态包括正在写入(如表示为running)和写入完成(如表示为finish),该执行状态可以由预设的状态值来表示,如当执行状态为running时,其状态值记为0,当执行状态为finish时,其状态值记为1,服务器返回执行状态时是返回其状态值。
步骤S606,所述客户端接收并判断所述执行状态是否为写入完成,若判断结果为是,则执行步骤S607,反之返回步骤S604。
步骤S607,关闭所述轮训机制并向所述服务器发送数据下载请求。
步骤S608,所述服务器根据所述数据下载请求压缩所述目标文件,并将压缩后的所述目标文件返回至所述客户端。本实施例中,将待导出数据以XML格式写入excel文件中,采用XML格式写入速度较快,同时XML格式的文件压缩率更高,进而客户端下载时速度更快。需要说明的是,本实施例中数据压缩的步骤在接收到数据下载请求时执行;而在实际应用中,该数据压缩步骤还可以由数据写入线程来执行,如图5所示,当数据写入完成后,直接将目标文件进行压缩,当服务器接收到客户端的数据下载请求时,直接将压缩后的目标文件返回至客户端,其中压缩后的目标以流的形式进行传输。
通过上述步骤S601至S608,本发明所提出的数据导出方法在接收到数据导出指令时,客户端根据数据写入线程的识别码采用轮训机制每隔预设的间隔时间请求服务器,避免了服务器响应超时的问题;同时,服务器将待导出数据以XML格式写入excel格式的目标文件中,并在数据写入完成时对目标文件进行压缩,其中XML格式的数据写入速度相比其他格式更快,且XML格式的文件压缩率更高,使得客户端下载数据时速度更快。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种数据导出装置,应用于web系统,所述web系统包括客户端和服务器,其特征在于,所述数据导出装置包括:
第一请求模块,用于在所述客户端接收到数据导出指令时,启动轮询机制并向所述服务器发送数据导出请求;
数据处理模块,用于使所述服务器根据所述数据导出请求启动数据写入线程以将待导出数据写入目标文件,并将所述数据写入线程的识别码返回至所述客户端;
第二请求模块,用于使所述客户端接收所述识别码并根据所述轮训机制的间隔时间每隔所述间隔时间向所述服务器发送所述数据导出请求和所述识别码;
查询模块,用于使所述服务器根据所述识别码查询相应的所述数据写入线程的执行状态并将所述执行状态返回至所述客户端;
判断模块,用于使所述客户端接收并判断所述执行状态是否为写入完成;
第三请求模块,用于在所述判断模块的判断结果为是时,关闭所述轮训机制并向所述服务器发送数据下载请求;
数据下载模块,用于使所述服务器根据所述数据下载请求将所述目标文件返回至所述客户端。
2.如权利要求1所述的数据导出装置,其特征在于,所述数据处理模块具体用于:
所述服务器根据所述数据导出请求启动数据写入线程;
所述数据写入线程将待导出数据以XML格式写入所述目标文件,其中所述目标文件为excel文件。
3.如权利要求2所述的数据导出装置,其特征在于,所述数据处理模块还用于:
所述数据写入线程分批次读取所述待导出数据并将读取到的所述待导出数据以XML格式写入所述目标文件。
4.如权利要求1所述的数据导出装置,其特征在于,所述数据导出装置还包括:
存储模块,用于使所述服务器将所述数据写入线程的识别码和执行状态写入存储单元。
5.如权利要求1所述的数据导出装置,其特征在于,所述数据下载模块具体用于:
所述服务器根据所述数据下载请求压缩所述目标文件;
将压缩后的所述目标文件返回至所述客户端。
6.一种数据导出方法,应用于web系统,所述web系统包括客户端和服务器,其特征在于,所述方法包括步骤:
所述客户端接收到数据导出指令时,启动轮询机制并向所述服务器发送数据导出请求;
所述服务器根据所述数据导出请求启动数据写入线程以将待导出数据写入目标文件,并将所述数据写入线程的识别码返回至所述客户端;
所述客户端接收所述识别码并根据所述轮训机制的间隔时间每隔所述间隔时间向所述服务器发送所述数据导出请求和所述识别码;
所述服务器根据所述识别码查询相应的所述数据写入线程的执行状态并将所述执行状态返回至所述客户端;
所述客户端接收并判断所述执行状态是否为写入完成,并在判断结果为是时,关闭所述轮训机制并向所述服务器发送数据下载请求;
所述服务器根据所述数据下载请求将所述目标文件返回至所述客户端。
7.如权利要求6所述的数据导出方法,其特征在于,所述服务器根据所述数据导出请求启动数据写入线程以将待导出数据写入目标文件的步骤具体为:
所述服务器根据所述数据导出请求启动数据写入线程;
所述数据写入线程将待导出数据以XML格式写入所述目标文件,其中所述目标文件为excel文件。
8.如权利要求7所述的数据导出方法,其特征在于,所述数据写入线程将待导出数据以XML格式写入所述目标文件的步骤具体为:
所述数据写入线程分批次读取所述待导出数据并将读取到的所述待导出数据以XML格式写入所述目标文件。
9.如权利要求6所述的数据导出方法,其特征在于,所述服务器根据所述数据导出请求启动数据写入线程以将待导出数据写入目标文件的步骤之后还包括:
所述服务器将所述数据写入线程的识别码和执行状态写入存储单元。
10.如权利要求6所述的数据导出方法,其特征在于,所述服务器根据所述数据下载请求将所述目标文件返回至所述客户端的步骤包括:
所述服务器根据所述数据下载请求压缩所述目标文件;
将压缩后的所述目标文件返回至所述客户端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710283281.XA CN107147706A (zh) | 2017-04-26 | 2017-04-26 | 数据导出方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710283281.XA CN107147706A (zh) | 2017-04-26 | 2017-04-26 | 数据导出方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107147706A true CN107147706A (zh) | 2017-09-08 |
Family
ID=59775038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710283281.XA Withdrawn CN107147706A (zh) | 2017-04-26 | 2017-04-26 | 数据导出方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107147706A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109660613A (zh) * | 2018-12-11 | 2019-04-19 | 网宿科技股份有限公司 | 文件传输方法及系统 |
CN110046191A (zh) * | 2019-04-22 | 2019-07-23 | 成都四方伟业软件股份有限公司 | 一种数据导出配置方法及装置 |
CN114567629A (zh) * | 2022-03-03 | 2022-05-31 | 上海电气风电集团股份有限公司 | 风场数据处理方法、处理装置、电子设备和介质 |
CN115297102A (zh) * | 2022-06-23 | 2022-11-04 | 青岛海尔科技有限公司 | 文件导出方法、装置和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826085A (zh) * | 2009-12-30 | 2010-09-08 | 厦门市美亚柏科信息股份有限公司 | 一种基于ajax的网页在线导入/导出大文件的方法 |
CN102426579A (zh) * | 2011-08-25 | 2012-04-25 | 中兴通讯股份有限公司 | 一种基于网络方式导入导出文件的方法 |
CN103412961A (zh) * | 2013-09-04 | 2013-11-27 | 广东全通教育股份有限公司 | 一种实时导出海量数据报表的处理方法和系统 |
WO2014032094A1 (en) * | 2012-08-28 | 2014-03-06 | Mmgpsip Pty Ltd | Data logging and tracking system |
-
2017
- 2017-04-26 CN CN201710283281.XA patent/CN107147706A/zh not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826085A (zh) * | 2009-12-30 | 2010-09-08 | 厦门市美亚柏科信息股份有限公司 | 一种基于ajax的网页在线导入/导出大文件的方法 |
CN102426579A (zh) * | 2011-08-25 | 2012-04-25 | 中兴通讯股份有限公司 | 一种基于网络方式导入导出文件的方法 |
WO2014032094A1 (en) * | 2012-08-28 | 2014-03-06 | Mmgpsip Pty Ltd | Data logging and tracking system |
CN103412961A (zh) * | 2013-09-04 | 2013-11-27 | 广东全通教育股份有限公司 | 一种实时导出海量数据报表的处理方法和系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109660613A (zh) * | 2018-12-11 | 2019-04-19 | 网宿科技股份有限公司 | 文件传输方法及系统 |
CN109660613B (zh) * | 2018-12-11 | 2021-10-22 | 网宿科技股份有限公司 | 文件传输方法及系统 |
CN110046191A (zh) * | 2019-04-22 | 2019-07-23 | 成都四方伟业软件股份有限公司 | 一种数据导出配置方法及装置 |
CN114567629A (zh) * | 2022-03-03 | 2022-05-31 | 上海电气风电集团股份有限公司 | 风场数据处理方法、处理装置、电子设备和介质 |
CN115297102A (zh) * | 2022-06-23 | 2022-11-04 | 青岛海尔科技有限公司 | 文件导出方法、装置和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104765617B (zh) | 基于html5实现的流应用功能接口分发方法及系统 | |
CN111984356B (zh) | 页面跳转方法、装置、计算机设备和存储介质 | |
US7284208B2 (en) | System and method for enabling at least one independent data navigation and interaction activity within a document | |
CN100492354C (zh) | 传递用户会话信息的门户服务器系统和方法 | |
CN100481088C (zh) | 网页资源发布方法和发布系统 | |
CN104321743B (zh) | 用于开发在通信网络上查询内容和服务的应用程序的方法和系统 | |
CN107147706A (zh) | 数据导出方法及装置 | |
CN109582644A (zh) | 文件存储方法、装置、设备及计算机可读存储介质 | |
CN102271165B (zh) | 互联网搜索资源的分享管理装置及方法 | |
CN112559927B (zh) | 一种网页加载方法及装置 | |
CN101785004A (zh) | 语境敏感请求结果的客户端侧聚集 | |
CN103118081B (zh) | 预加载浏览器中浏览页面的服务器、客户端、系统和方法 | |
JP2009518724A (ja) | ポータル・システム内で非同期ポータル・ページを提供するための方法、システム、およびコンピュータ・プログラム | |
CN109977822B (zh) | 数据供给方法、模型训练方法、装置、系统、设备和介质 | |
CN103092626A (zh) | 基于Flex和web3D技术的富互联网应用方法 | |
US20040210433A1 (en) | System, method and apparatus for emulating a web server | |
CN112804317A (zh) | 一种移动终端图片上传的方法及装置 | |
CN102542858A (zh) | 课程播放方法和系统 | |
JP5530217B2 (ja) | 文書閲覧システム及びドキュメント変換サーバ | |
CN110267077B (zh) | 离线缓存方法、装置、终端及可读存储介质 | |
CN102571826B (zh) | 从网络平台向客户端推送应用的方法和系统 | |
CN109716731A (zh) | 用于提供可靠和高效数据传送的系统和方法 | |
CN105786476A (zh) | 移动客户端与服务器之间的数据处理方法及系统 | |
CN103917951B (zh) | 应用调用的方法及操作系统、浏览器 | |
CN101360009A (zh) | 机顶盒应用管理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20170908 |
|
WW01 | Invention patent application withdrawn after publication |