Laravel的Web爬虫

问题描述 投票:1回答:1

我有一个Android应用程序,允许用户搜索的东西,应用程序将句子分成单词,并爬过一个网站列表,试图找到具有这些特定单词的页面。现在我把它作为一个工作并排队,我认为可能适用于1个用户但是我担心我的应用程序增长时我有1000-50000个用户同时进行搜索,我显然不能使用队列了。

这样做的最佳方法是什么?我已经在PHP中对多线程进行了一些研究,但是我想要一些实际的例子,因为我对这个概念并不熟悉。

简单地说,我在这里要求的是如何在laravel上同时执行1000-50000个作业。请注意,每个作业都包含搜索相当多网站以搜索数据的代码。

multithreading laravel queue lumen
1个回答
1
投票

我不确定这是否是你想要获得的答案。这只是我的意见,我希望能够提供另一种方法来满足您的需求。

拥有1000-50000的concurent过程非常大。它还需要更多的服务器资源。假设1个用户队列(用于抓取每个单词,在网站的每个页面中)需要1MB内存。或者可能是500kB。

500kB * 500000 = 250,000,000 KB = 243,190.66 MB = 236.57 GB

相当大啊。 IMO,而不是基于用户词查询请求排队。您需要的是排队爬网站页面并将其保存到数据库/缓存。在您的情况下3-5个网站,每个网站10页。让我们说它500页。每个用户队列实际上都会做同样的抓取过程吗?

因此,每个站点每页只需执行一次爬网(可能每天一次)。在下一个用户查询请求中,您不需要重新抓取它,因为它已经完成。因此,用户查询结果将仅针对您已保存的数据库。我认为,它会削减更多的进程botteneck,也会使搜索结果更快。

© www.soinside.com 2019 - 2024. All rights reserved.