2

我是一家主要生产工具的互联网营销公司的程序员。这些工具有一定的要求:

  • 它们在浏览器中运行,并且必须在所有浏览器中运行。
  • 用户要么上传一些东西(.csv)来处理,要么他们提供一个 URL 并进行 API 调用以检索有关它的信息。
  • 他们正在移动数千行数据(想想大型数据库)。这些工具实际上运行了几个小时,通常是一整夜。
  • 用户必须能够在他们的信息被处理并呈现给他们时实时观看。

目前我们正在使用 PHP、MySQL 和 Ajax 编写代码。

我的问题是如何处理大量数据并在工具运行时提供用户体验。目前我使用一个自定义队列系统,它发送 ajax 调用并将行插入到表中或将数据插入到 div 中。

这种方法是一个巨大的痛苦,不可能是正确的方法。我应该使用模板系统还是有更好的方法来刷新包含大量数据的页面块。我的意思是大量数据,因为我们接近于用尽 PHP 内存,这是我们一直在寻找的东西。

我也很想这样做,这样这些工具就可以自己在服务器上运行。我的意思是上传一个 .csv 文件并关闭浏览器窗口,然后在工具完成后向用户发送一封电子邮件。

有没有人有比使用 .ajax 调用更好的方法(编程标准)?谢谢你。


我想更新一些笔记,以防有人有同样的问题。我正在研究以下内容,看看哪个是最好的解决方案:

  • SlickGrid / 数据表
  • 齿轮人
  • 网络套接字
  • 棘轮
  • 节点.js

这些没有特别的顺序,我选择的一个将基于什么对我的问题有用,什么可以被我部门的其他人使用。当我选择黄金框架时,我会更新。

4

3 回答 3

1

首先,您无法通过 Ajax 处理大数据。为了让用户能够实时观看进程,您可以使用 Web 套接字来执行此操作。正如您在 PHP 方面的经验一样,我可以向您推荐Ratchet,它是相当新的。

另一方面,为了进行计算和存储大数据,我会使用 NoSQL 而不是 MySQL

于 2013-02-01T17:10:41.610 回答
1

我认为您可以使用某种队列管理器在后台运行所需的内容。我使用与 CakePHP 类似的东西,它让我可以在后台异步运行时间密集型进程,因此不需要打开浏览器。

另一个优点是它是可扩展的,因为它很容易增加运行的队列工作者的数量。

基本上使用 PHP,您只需要一个每隔一段时间运行一次的 cron 作业,它会启动一个检查队列数据库的待处理任务的工作人员。如果没有找到,它会一直循环运行,直到出现一个。

于 2013-04-10T16:48:23.003 回答
1

由于您已经有点时间紧迫,迁移到Node.js可能对时间不敏感。它还有助于解决通知用户何时准备好结果的问题,因为它可以在不进行轮询的情况下进行浏览器通知推送。由于它使用 Javascript,您可能会发现您的一些客户端代码是可重用的。

于 2013-02-01T18:33:51.443 回答