2013-03-05 16 views
5

Laravel 3 kullanarak bir web kazıyıcı yapıyorum ve bir sıra sistemi var resque.İş Kuyruk sistemi ile PHP/Laravel'de mantık kodu

Soru: Kazıma mantığı kodunu nereye yerleştirmeliyim?

  • İşçi/iş sınıfında?

  • İşçi/iş sınıfı tarafından statik olarak adlandırılan bir kitaplık sınıfında?

  • Bir denetleyici işlevinde ve işçi/iş sınıfının denetleyici işlevini tetiklemesini mi istiyorsunuz?

Şu anda bu yüzden onun url giderek test edebilirsiniz denetleyici fonksiyonu içinde var. Bu ayrıca, Cron kullanarak yinelenen işlere de izin verir, çünkü resque yinelenen işlere izin vermez. Kazıma fonksiyonlarını test etmenin bu kolay yolunu hala korumam gerekecek.

Deneme: İşte düşündüğüm, bu tür amaçlarla kodunuzu nasıl düzenlersiniz?

İşçi Sınıfı

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

Kazıma Sınıf

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

Kontrolör hızlı test için Sınıf

ve Cron işleri vurmak için

class Scraper_Controller extends Base_Controller { 

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

cevap

0

Sanırım doğru yoldasınız. Değiştirebileceğiniz bir şey, Kazıyıcı ve yöntemlerinin statik OLMADIĞINI sağlamaktır. Bu, kullanımını zorlaştırır, ancak bir LOT ünite testini kolaylaştırır. Bu, Kazıyıcı daha karmaşık hale geldiğinde ve yapılandırmaya ihtiyaç duyduğunda daha da önem kazanmaktadır.

PS. PHP-Spider'u kontrol edin: genişletilebilir ve yapılandırılabilir örümcek/kazıyıcı. Çok fazla iş kurtarabilir. Not: Şu anda uzak çalışanlar için varsayılan bir uygulama bulunmamaktadır, ancak bu çok yakın bir gelecek için yol haritası üzerindedir. Tam açıklama: Yazdım.