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

时间:2013-03-05 12:33:31

标签: php web-scraping screen-scraping laravel resque

我正在使用Laravel 3进行网络抓取,并拥有一个队列系统resque

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

  • 在工人/工作班?

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

  • 在控制器功能中,是否有工人/作业类触发控制器功能?

我目前在控制器功能中有它,所以我可以通过转到它的url来测试它。这也允许使用Cron重复作业,因为resque不允许重复作业。我仍然需要保留这种测试抓取功能的简单方法。

尝试:以下是我的想法,您将如何为此目的整理代码?

工人阶级

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

刮刮类

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

控制器类

用于快速测试,以及用于Cron作业

class Scraper_Controller extends Base_Controller {

    public function test_scrape($url) {
        Scraper::do_scrape($url);
    }
}

1 个答案:

答案 0 :(得分:0)

我认为你走在正确的轨道上。你可以改变的一件事是使Scraper及其方法不是静态的。这样就不会让它变得难以使用,但是更容易进行单元测试。当Scraper变得更加复杂并需要配置时,这一点变得尤为重要。

PS。检查PHP-Spider:可扩展且可配置的蜘蛛/刮刀。它可以为你节省很多工作。注意:目前它没有远程工作者的默认实现,但这是在不久的将来的路线图上。完全披露:我写了。