我有一个棘手的问题。我在一个基本的共享主机上。我使用 curl 和 php 创建了一个很好的抓取脚本。
因为使用 Curl 的多线程并不是真正的多线程,即使是我使用过的最好的 curl 多线程脚本也可以将抓取速度提高 1,5-2,我得出的结论是我需要运行大量的 cron 任务(例如 50)在我的 php 脚本上每分钟与 mysql 表交互,以便为我的客户提供快速的网络抓取。
我的问题是,当同时运行大量 cron 任务时,我得到一个“Mysql 服务器已经消失”。如果我减少 cron 任务的数量,它会继续工作,但总是很慢。
我还尝试了基于浏览器的解决方案,每次完成时都重新加载脚本。它工作得更好但总是同样的问题:当我决定同时运行 10 次脚本时,它开始使 mysql 服务器或 web 服务器过载(我不知道)
为了解决这个问题,我获得了一个 mysql 服务器,我可以在其中设置 my.cnf ...但问题大致相同。
========= 我的问题是:问题出在哪里?桌子尺寸?我需要一个 100MBPS 的大型专用服务器。如果是,您确定它会解决问题吗?它有多快?通过知道我希望提取速度达到每秒大约 100 个 URL(此时,它达到每 15 秒 1 个 URL,非常慢......)
剧本只有一段。它加载所有页面和 preg 匹配或 dom 数据并插入 mysql 数据库。
我提取了大量数据,这就是为什么一个表会快速包含数百万个条目......但是当我删除它们时,它可能会更快一些,但它总是同样的问题:不可能按顺序并行运行大量任务加快进程。
我不认为问题出在我的脚本上。在所有情况下,即使完美优化,我也不会像我想要的那样快。
我通过使用没有otu代理的脚本来进行抓取,但差异非常小..不显着..
我的结论是我需要使用专用服务器,但如果我不确定它是否能解决问题,我不想每月投资 100 美元,我将能够运行这些大量的 cron 任务/调用mysql 数据库没有问题。