我正在使用Laravel 3制作一个web scraper,并有一个队列系统resque
。
问题:我应该把抓取逻辑代码放在哪里?
-
在worker/job类中?
-
在由worker/job类静态调用的库类中?
-
在一个控制器函数,并有工人/作业类触发控制器函数?
我目前在控制器函数中有它,所以我可以通过转到它的url来测试它。这也允许使用Cron循环作业,因为resque
不允许循环作业。我仍然需要保留这种测试抓取功能的简单方法。
尝试:这就是我在想的,你将如何为这样的目的组织你的代码?
工人阶级
class ScraperWorker
{
public function perform()
{
$url = $this->args['url']
Scraper::do_scrape($url);
}
}
<<p> 刮类/strong> 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);
}
}
我认为你是对的。你可以改变的一件事是使Scraper及其方法不是静态的。这将使它不会更难使用,但更容易进行单元测试。当Scraper变得更复杂并且需要配置时,这一点变得尤其重要。
p。检查PHP-Spider:一个可扩展和可配置的爬虫/scraper。它可以为你节省很多工作。完全披露:这是我写的