【问题标题】:Logic code in PHP/Laravel with Job Queue system带有作业队列系统的 PHP/Laravel 中的逻辑代码
【发布时间】:2013-02-19 20:41:32
【问题描述】:

我正在使用 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);
    }
}

【问题讨论】:

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


    【解决方案1】:

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

    PS。检查PHP-Spider:一个可扩展和可配置的蜘蛛/爬虫。它可以为您节省大量工作。完全披露:我写的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 2011-09-15
      • 2014-07-26
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      相关资源
      最近更新 更多