ajax - 从 ubuntu 服务器向浏览器推送数据

标签 ajax perl ubuntu push-notification push

我有一个网络应用程序,它几乎是一个网络爬虫。 Web 爬虫脚本通过 ajax 调用从客户端浏览器调用(基本上是启动 PHP 脚本,然后调用 Perl 脚本来完成繁重的工作)。因为脚本正在抓取大量数据,所以它需要一两分钟才能完成。我试图找出将数据从 perl 脚本实时推送到用户浏览器以显示某种“进度”的最佳方式,而不是仅仅显示一两分钟的加载动画。
该应用程序托管在我自己的 Ubuntu VPS 上,因此我可以使用我喜欢的任何技术。解决这个问题的最佳方法是什么?

最佳答案

由于您已经在使用 perl,您可能会考虑将您的脚本变成一个“异步”应用程序,它可以在使用 perl 的同时抓取并“推送”某种更新。你可以使用类似 Mojolicious ,或许多 Plack/PSGI 服务器替代方案之一(例如:TwiggyStarletKelp 等,参见 CPAN)这将允许您将脚本作为单独的应用。

使用部分抓取结果更新页面可能有点棘手,但是如果您可以从教程和“如何”类型的文章中弄清楚如何使您的抓取器以这种方式运行,例如:

  • Mojolicious Cookbook解决问题的示例方法 - 当我使用 RTFM 时,我喜欢从这里开始。
  • Basic Mojolicious AJAX example一个简单的文件示例。见MojoliciousTwiggy文档和示例。

  • 并审查有关使用它们的讨论:
  • Writing websocket chat using Mojolicious Lite (现在有 Convos 用于聊天)
  • PSGI, AnyEvent, Twiggy ... 讲述了一个 perlmonk 使用这些工具的冒险
  • Mojolicious websocket with server-side repeating events .在您的情况下,客户端/服务器请求将运行事件,但这可能有助于作为调试示例。

  • .. 然后您可以将更新后的脚本挂接到您现有的服务器基础架构中。一种方法是将 Shiny 的新“websocket 脚本”连接到一个目录(使用 Apache 指令,如 ProxyPass 或其等效指令),客户端请求可以访问该目录。

    --

    另见 @creaktive's "ultimate" answer to the web scraper in Modern Perl question 的示例在 http://blogs.perl.org ...

    关于ajax - 从 ubuntu 服务器向浏览器推送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26945497/

    相关文章:

    perl - 找出所有相乘得到 X 的整数?

    javascript - 在地址栏中输入 URL 进行重定向

    javascript - 使用 Ajax 和 Python 返回 Highcharts

    java - 无法从 Java 调用 perl 脚本

    python - 无法在 ubuntu 中将默认 python 版本设置为 python3

    linux - 为什么我们使用 ~/before .bashrc

    amazon-web-services - 无法通过 ssh 隧道 + 代理连接到远程实例

    javascript - request.body 与 request.params 与 request.query

    php - 使用ajax将 session 变量插入数据库

    html - Perl CGI 向 mySQL 数据库发送空值?