首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要的意见/专业知识/建议-提供执行冗长任务的php反馈

需要的意见/专业知识/建议-提供执行冗长任务的php反馈
EN

Stack Overflow用户
提问于 2010-08-27 10:02:29
回答 2查看 48关注 0票数 0

我正在考虑将一个visual basic应用程序(它接收以竖线分隔的文件并将它们导入到microsoft sql数据库中)转换为一个php页面。其中一个文件的平均大小约为9兆字节。(我不能准确地说出所涉及的行数,但我会说大约是20000行)

其中一个优点是,对页面所做的任何更改都会自动‘部署’到目标用户(目前,当我对最初由其他人创建的visual basic应用程序进行更改时,我必须将最新版本放到所有使用它的人的PC上)。

问题是这些导入可能需要两分钟才能完成。两分钟对于网站时间来说是一个很长的时间,所以我想向用户提供反馈,以表明页面没有失败/超时,并且肯定在做一些事情。

到目前为止,我能想到的最好的想法就是使用ajax来逐步完成这项工作。假设一次导入1000条记录,然后反馈,实现下一条1000条记录,然后反馈,依此类推。

有没有更好的方法来做这类事情,而不需要我学习新的编程语言或下载应用程序或库?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-28 03:19:54

您不必进行Visual Basic ->开关。在ASP或ASP.NET应用程序中,你可以坚持使用VB语法。使用基于ASP的解决方案,您可以重用大量现有代码,这样它就不会从头开始学习一门新语言。

至于如何向用户呈现一个长时间运行的进程,您正在寻找“异步处理程序”--基本前提是用户访问一个启动进程页面(B)的网页(A)。

  • (A)启动(B),向用户报告启动,并设置页面在n秒内重新加载。
  • (B)完成所有繁重的工作-就像你现有的VB应用程序一样。进度存储在某些共享空间(平面文件、数据库、内存缓存等)中
  • 在重新加载时,(A)通过只读访问共享空间(B)来报告(B)的当前进度。

(A)的作用域:

  • 查找正在运行的(B)进程-如果找到则报告状态,或启动新的(B)进程。由于(B)似乎是基于文件的存在(根据您的描述),您可以授予(A)确定调用(B)是否有任何意义的能力(即。如果文件存在,请调用(B) else report: you to do),或者您可能希望保持作用域完全空闲并调用(B)。
  • 报告(B)的进度。
  • 执行的时间应该很短,可能希望包含HTTP刷新标头以便用户自动获取更新。

(B)的作用域:

与现有VB脚本相同的

  • -查找文件,加载…Yadyadyad.
  • 的执行时间应该与现有VB脚本相似(2分钟)

的潜在改进:

  • (A)可以使用AJAX接口,因此不是重新加载页面(HTTP刷新),而是每隔n秒进行一次AJAX调用,并简单地更新状态框。一些类型的动画图标(旋转轮)会给用户的印象是在refreshes.
  • It之间发生了什么,听起来像(B)可以从多线程方法(一次加载多个文件)中受益,这取决于文件是否相关。正如小马所指出的,可能有更好的策略来处理这样的负载,但这是一个完全不同的主题:)
  • 如果页面(A)可以被多个用户同时点击,并且(B)需要几秒钟来启动和报告状态,则可能需要某种信号量/标志方法。

(A)和(B)都可以用PHP或ASP技术开发。

票数 2
EN

Stack Overflow用户

发布于 2010-08-27 10:22:13

如何将数据导入数据库?理想情况下,您应该使用SQL Server's BULK INSERT,这可能会加快速度。但这仍然是上传文件以进行解析的问题...

我认为不值得花费精力去获取插入的状态--大多数站点只会显示一个动态的gif/etc (像沙漏等)来表明系统正在处理东西,但没有真正的细节。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3580844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档