【问题标题】:Pushing data to browser from ubuntu server从 ubuntu 服务器向浏览器推送数据
【发布时间】:2014-11-15 11:49:31
【问题描述】:

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

【问题讨论】:

    标签: ajax perl ubuntu push-notification push


    【解决方案1】:

    由于您已经在使用 perl,您可能会考虑将您的脚本变成一个“异步”应用程序,该应用程序在使用 perl 时会抓取并“推送”某种更新。你可以使用Mojolicious 之类的东西,或者许多 Plack/PSGI 服务器替代品之一(例如TwiggyStarletKelpc.f. CPAN)这将允许您将脚本作为单独的应用程序运行。

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

    并查看有关使用它们的讨论:

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

    --

    另请参阅@creaktive's 示例以获取"ultimate" answer to the web scraper in Modern Perl question http://blogs.perl.org ...

    【讨论】:

    • Twiggy 是一个服务器,它与 Mojolicious 应用程序一样有什么帮助?
    • 当时认为 OP 可以在单独的环境中将抓取应用程序作为服务器而不是脚本运行。也许在这里特别提到 Twiggy 并没有帮助。
    • 虽然我会推荐 Mojolicious,但如果您想推荐替代方案,您可以只提及 PSGI。除此之外的部署选项很多,Twiggy 就是其中之一。
    • @creaktive 也已添加 :-)
    • fyi,我在这里将我对@creaktive 的回答正式化为要点:gist.github.com/jberger/5153008
    【解决方案2】:

    您可以使用 nodejs 和进度插件 (https://www.npmjs.org/package/progress)

    【讨论】:

      猜你喜欢
      • 2015-09-15
      • 2010-12-29
      • 1970-01-01
      • 2021-07-12
      • 2013-11-19
      • 2010-09-06
      • 2013-08-13
      • 1970-01-01
      • 2019-05-24
      相关资源
      最近更新 更多