2017-07-02 137 views
0

我用Laravel构建一个小统计服务。我抓取一些网站,并从那里获得我的应用程序的统计数据。例如,我从YouTube和Twitter获取订阅人数。如何组织许多爬虫功能?

public function getYouTubeStats() {} 
public function getTwitterStats() {} 
public function getFacebookStats() {} 
... 

所以现在我有一个控制器可以带20层或30的功能,其中的每一个抓取需要自己的功能,因为很明显,每一个外部网站是不同的。但我不认为这么大的控制器对未来的发展是有好处的。所以我的问题是我怎么能组织这个?

我可以为每个爬虫制作一个自己的控制器。但我无法从我的主要抓取控制器中获得其他控制器的功能。例如,我需要的功能getStats()YouTubeControllerMainCrawler控制器。我不认为有一个简单的方法来做到这一点?

还是应该为每项服务制作一个新模型?

$youtube = new YouTubeStat::getStats(); 
$twitter = new TwitterStat::getStats(); 

回答

0

我有一个类似的项目,我为每个社交网络创建了一个控制器。

然后在你的MainCrawler你可以说$stats = (new YouTubeController)->getStats();

如果你在你的社交网络控制器具有类似的功能,你应该使用Trait

+0

好吧,是的,我认为每个服务一个控制器是一个很好的解决方案。谢谢你的建议。 –