PHP 以间隔从 url 抓取和下载文件
Posted
技术标签:
【中文标题】PHP 以间隔从 url 抓取和下载文件【英文标题】:PHP Scrape and download files from urls with interval 【发布时间】:2016-01-22 15:12:18 【问题描述】:我已经构建了一个抓取工具来从另一个网站获取一些数据。刮板当前在屏幕的命令行中运行,因此该过程永远不会停止。在每个请求之间,我设置了一个间隔以保持冷静。在一次抓取中,可能会有 100 个文件需要下载。而且这个过程在每次下载后都有一个时间间隔。
现在我想在后端添加功能以即时抓取。一切正常,我得到了第一个只有 2 个请求的数据集。在返回的数据中,我有一个需要下载文件的数组(可以是 10 可以是 +100)。我想创建一些用户可以实时查看下载过程的内容。
我面临的事情是,当刮板在浏览器窗口中有 2 项工作要做时,最多可以下载 +20 次下载,包括保持稳定的时间间隔,这将花费太多时间。我正在考虑将需要下载的文件保存到数据库表中,并通过另一个 shell 脚本(屏幕)或 cronjob 处理这部分数据处理。
我想知道我的想法是否是好的、过度的,或者有一些更好的例子来处理这些过程。
感谢您的建议。
附言我正在使用 php 开发
【问题讨论】:
我真的不需要尝试,我知道它会起作用,但我的问题是,以这种方式处理这些事情的方式是否明智,或者我应该以另一种方式处理它 【参考方案1】:如果您认为这太过分了,您可以运行脚本并等待该任务完成后再运行。
【讨论】:
【参考方案2】:基本上,您需要实现message queue,其中 http 请求处理程序(前端控制器?)发出一条消息以获取页面,一个或多个工作人员完成这项工作,可选择向队列发送更多消息以下载文件。
有很多 MQ 代理,但您可以使用数据库作为队列存储来实现自己的。
【讨论】:
Coo,我想这个逻辑和我的想法一样;)谢谢 很高兴知道它有帮助。附带说明一下,您可能希望 supervisord.org “妖魔化”您的工作人员,而不是让他们在分离的屏幕会话中运行。以上是关于PHP 以间隔从 url 抓取和下载文件的主要内容,如果未能解决你的问题,请参考以下文章