2013-03-05 11 views
5

मैं लैरवेल 3 का उपयोग करके एक वेब स्क्रैपर बना रहा हूं और एक कतार प्रणाली resque है।जॉब कतार प्रणाली के साथ PHP/Laravel में तर्क कोड

प्रश्न: मुझे स्क्रैपिंग तर्क कोड कहां रखना चाहिए?

  • कार्यकर्ता/नौकरी कक्षा में?

  • लाइब्रेरी कक्षा में जिसे कार्यकर्ता/नौकरी कक्षा द्वारा स्थिर रूप से कहा जाता है?

  • नियंत्रक समारोह में और कार्यकर्ता/नौकरी कक्षा नियंत्रक फ़ंक्शन को ट्रिगर करती है?

मेरे पास वर्तमान में नियंत्रक फ़ंक्शन में है इसलिए मैं इसे अपने यूआरएल पर जाकर परीक्षण कर सकता हूं। यह क्रोन का उपयोग करके पुनरावर्ती नौकरियों को भी अनुमति देता है, क्योंकि 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 
    } 
} 

नियंत्रक कक्षा

त्वरित परीक्षण के लिए, और क्रॉन नौकरियों को हिट करने के लिए

class Scraper_Controller extends Base_Controller { 

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

उत्तर

0

मुझे लगता है कि आप सही रास्ते पर हैं। एक चीज जिसे आप बदल सकते हैं वह स्क्रैपर और इसकी विधियों को स्थिर नहीं बना रहा है। इससे इसका उपयोग करना मुश्किल नहीं होगा, लेकिन इकाई परीक्षण के लिए बहुत आसान है। यह विशेष रूप से महत्वपूर्ण हो जाता है, जब स्क्रैपर अधिक जटिल हो जाता है और कॉन्फ़िगरेशन की आवश्यकता होती है।

पीएस। PHP-Spider देखें: एक एक्स्टेंसिबल और कॉन्फ़िगर करने योग्य मकड़ी/खुरचनी। यह आपको बहुत काम बचा सकता है। नोट: वर्तमान में रिमोट श्रमिकों के लिए इसका कोई डिफ़ॉल्ट कार्यान्वयन नहीं है, लेकिन यह निकट भविष्य के लिए रोडमैप पर है। पूर्ण प्रकटीकरण: मैंने इसे लिखा था।

संबंधित मुद्दे