2013-03-05 10 views
5

Robię skrobaczkę internetową przy użyciu Laravel 3 i mam system kolejkowy resque.Kod logiczny w PHP/Laravel z systemem kolejki zadań

Pytanie: Gdzie należy umieścić kod logiczny skrobania?

  • W kategorii pracownik/praca?

  • W klasie biblioteki, która jest nazywana statycznie przez robotnika/klasę zadania?

  • W funkcji kontrolera i czy robot/klasa zadań wyzwala funkcję kontrolera?

Obecnie mam go w funkcji kontrolera, więc mogę przetestować go, przechodząc do jego adresu URL. Pozwala to również na powtarzanie zadań za pomocą Cron, ponieważ resque nie pozwala na powtarzające się zadania. Nadal będę musiał zachować łatwy sposób testowania funkcji skrobania.

Próba: Oto co mam na myśli, w jaki sposób można zorganizować swój kod do takich celów?

Pracownik Class

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

Skrobanie Klasa

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

klasy Controller

Do szybkiego testowania i dla crona trafić

class Scraper_Controller extends Base_Controller { 

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

Odpowiedz

0

Myślę, że jesteś na dobrej drodze. Jedną z rzeczy, którą można zmienić, jest to, że Skrobak i jego metody NIE są statyczne. To sprawiłoby, że nie byłoby trudniej go użyć, ale DUŻO łatwiej było przeprowadzić test jednostkowy. Jest to szczególnie ważne później, gdy Skrobak staje się bardziej złożony i wymaga konfiguracji.

PS. Sprawdź PHP-Spider: rozszerzalny i konfigurowalny pająk/zgarniacz. To może zaoszczędzić ci dużo pracy. Uwaga: Obecnie nie ma domyślnej implementacji dla pracowników zdalnych, ale jest to na mapie drogowej na najbliższą przyszłość. Pełne ujawnienie: napisałem to.

Powiązane problemy