【问题标题】:PHP Scrape and download files from urls with intervalPHP 以间隔从 url 抓取和下载文件
【发布时间】:2016-01-22 15:12:18
【问题描述】:

我已经构建了一个抓取工具来从另一个网站获取一些数据。刮板当前在屏幕的命令行中运行,因此该过程永远不会停止。在每个请求之间,我设置了一个间隔以保持冷静。在一次抓取中,可能会有 100 个文件需要下载。而且这个过程在每次下载后都有一个时间间隔。

现在我想在后端添加功能以即时抓取。一切正常,我得到了第一个只有 2 个请求的数据集。在返回的数据中,我有一个需要下载文件的数组(可以是 10 可以是 +100)。我想创建一些用户可以实时查看下载过程的内容。

我面临的事情是,当刮板在浏览器窗口中有 2 项工作要做时,最多可以下载 +20 次下载,包括保持稳定的时间间隔,这将花费太多时间。我正在考虑将需要下载的文件保存到数据库表中,并通过另一个 shell 脚本(屏幕)或 cronjob 处理这部分数据处理。

我想知道我的想法是否是好的、过度的,或者有一些更好的例子来处理这些过程。

感谢您的建议。

附言我正在使用 PHP 开发

【问题讨论】:

  • 我真的不需要尝试,我知道它会起作用,但我的问题是,以这种方式处理这些事情的方式是否明智,或者我应该以另一种方式处理它

标签: php download set bigdata


【解决方案1】:

如果您认为这太过分了,您可以运行脚本并等待该任务完成后再运行。

【讨论】:

    【解决方案2】:

    基本上,您需要实现message queue,其中 http 请求处理程序(前端控制器?)发出一条消息以获取页面,一个或多个工作人员完成这项工作,可选择向队列发送更多消息以下载文件。

    有很多 MQ 代理,但您可以使用数据库作为队列存储来实现自己的。

    【讨论】:

    • Coo,我想这个逻辑和我的想法一样;)谢谢
    • 很高兴知道它有帮助。附带说明一下,您可能希望 supervisord.org “妖魔化”您的工作人员,而不是让他们在分离的屏幕会话中运行。
    猜你喜欢
    • 1970-01-01
    • 2013-03-28
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 2018-01-20
    相关资源
    最近更新 更多