我有一个网络应用程序,它几乎是一个网络爬虫。 Web 爬虫脚本通过 ajax 调用从客户端浏览器调用(基本上是启动 PHP 脚本,然后调用 Perl 脚本来完成繁重的工作)。因为脚本正在抓取大量数据,所以它需要一两分钟才能完成。我试图找出将数据从 perl 脚本实时推送到用户浏览器以显示某种“进度”的最佳方式,而不是仅仅显示一两分钟的加载动画。
该应用程序托管在我自己的 Ubuntu VPS 上,因此我可以使用我喜欢的任何技术。解决这个问题的最佳方法是什么?
最佳答案
由于您已经在使用 perl,您可能会考虑将您的脚本变成一个“异步”应用程序,它可以在使用 perl 的同时抓取并“推送”某种更新。你可以使用类似 Mojolicious ,或许多 Plack/PSGI 服务器替代方案之一(例如:Twiggy、Starlet、Kelp 等,参见 CPAN)这将允许您将脚本作为单独的应用。
使用部分抓取结果更新页面可能有点棘手,但是如果您可以从教程和“如何”类型的文章中弄清楚如何使您的抓取器以这种方式运行,例如:
并审查有关使用它们的讨论:
.. 然后您可以将更新后的脚本挂接到您现有的服务器基础架构中。一种方法是将 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/