带有作业队列系统的PHP / Laravel中的逻辑代码

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

我正在使用Laravel 3制作Web刮板,并且具有队列系统resque

问题:我应该在哪里放置刮取逻辑代码?

  • 在工人/工人阶级?

  • 在一个由worker / job类静态调用的库类中?

  • 在控制器功能中,并让worker / job类触发控制器功能吗?

我目前在控制器功能中拥有它,因此可以通过转到其URL进行测试。这也允许使用Cron进行周期性作业,因为resque不允许进行周期性作业。我仍然需要保留这种简单的方式来测试抓取功能。

Attempt:这是我的想法,您将如何组织代码用于此类目的?

工人阶级

class ScraperWorker
{
    public function perform()
    {
        $url = $this->args['url']
        Scraper::do_scrape($url);
    }
}

抓取类

class Scraper
{
    public static function do_scrape($url) {
        //some scraping code
    }
}   

Controller Class

用于快速测试,并击中Cron作业

class Scraper_Controller extends Base_Controller {

    public function test_scrape($url) {
        Scraper::do_scrape($url);
    }
}
php web-scraping screen-scraping laravel resque
1个回答
0
投票

我认为您在正确的轨道上。您可以更改的一件事是使Scraper及其方法不是静态的。这将使它变得更难使用,但是很多更易于进行单元测试。稍后,当Scraper变得更复杂并且需要配置时,这一点变得尤为重要。

PS。检查PHP-Spider:可扩展且可配置的蜘蛛/刮板。它可以为您节省很多工作。完全公开:我写的。

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