【发布时间】:2009-06-08 17:02:29
【问题描述】:
我有一个个人网站,它从我最喜欢的音乐博客中抓取和收集 MP3 以供以后收听...
它的工作方式是 CRON 作业每分钟运行一次 .php 脚本,以抓取数据库中的下一个博客。结果被放入数据库,然后第二个 .php 脚本抓取收集到的链接。
脚本只向下爬入页面的两个级别,因此.. 主页 www.url.com 和该页面上的链接 www.url.com/post1 www.url.com/post2
我的问题是,当我开始收集更多的博客时。它们每 20 到 30 分钟只被扫描一次,当我将新博客添加到脚本中时,会在扫描链接时进行备份,因为每分钟只处理一个。
由于 PHP 的工作方式,由于脚本执行时间的原因,我似乎不能只允许脚本处理多个或有限数量的链接。内存限制。超时等。
我也不能运行同一脚本的多个实例,因为它们会在数据库中相互覆盖。
我可以加快这个过程的最佳方法是什么。
有没有一种方法可以让多个脚本影响数据库但写入它们以便它们不会相互覆盖但将结果排队?
有没有办法在 PHP 中创建线程,以便脚本可以按照自己的节奏处理链接?
有什么想法吗?
谢谢。
【问题讨论】:
-
我不太确定我是否理解你的问题,但你能不能在你的 php 脚本的不同实例之间拆分博客站点列表并独立运行它们?如果您有一个脚本覆盖了另一个的数据库条目,那么您可能应该重新考虑您的数据库设计。
-
一个名为 import.io 的现有网络应用可能在这里有用(我与他们没有任何关系)
标签: php multithreading screen-scraping web-crawler