2011-10-30 11 views
16

मेरे पास एक क्रोनबॉज है जो हर घंटे चलता है और 150,000+ रिकॉर्ड पार्स करता है। प्रत्येक रिकॉर्ड को एक MySQL तालिकाओं में अलग-अलग सारांशित किया जाता है। मैं उपयोगकर्ता की जानकारी पुनर्प्राप्त करने के लिए दो वेब सेवाओं का उपयोग करता हूं।क्रोनबॉज: वेब सेवा क्वेरी

  1. उपयोगकर्ता जनसांख्यिकीय (आईपी, देश, शहर आदि)
  2. फोन जानकारी (यदि लैंडलाइन या सेल फोन और वाहक अगर सेल फोन क्या है)

हर बार जब मैं 1 रिकॉर्ड मैं जांचें कि क्या मेरे पास जानकारी है और यदि नहीं, तो मैं इन वेब सेवाओं को कॉल करता हूं। मेरे कोड का पता लगाने के बाद मुझे पता चला कि इन दोनों कॉलों में 2 से 4 सेकंड लगते हैं और यह मेरी cronjob बहुत धीमी बनाता है और मैं समय पर आंकड़े संकलित नहीं कर सकता।

क्या इन वेब सेवाओं को तेज़ी से बनाने का कोई तरीका है?

धन्यवाद

उत्तर

22

सरल:

डेटा स्थानीय रूप से मिलता है और Mellissa डेटा का उपयोग करें: http://www.melissadata.com/fonedata.html

आप भी कर सकते हैं: फोन के लिए http://w10.melissadata.com/dqt/websmart/ip-locator.htm

  • : आईपी के लिए

    1. उन्हें memcache या एपीसी का उपयोग कर कैश करें जो वाई इसे तेज कर देगा क्योंकि उसे एपीआई या डेटाबेस से डेटा का अनुरोध नहीं करना है।

  • +0

    क्या कोई निःशुल्क संस्करण है? – Tech4Wilco

    +0

    geodata के लिए हाँ आप अधिकतममाइंड का उपयोग कर सकते हैं लेकिन फोन के लिए, मुझे संदेह है कि यह –

    +0

    धन्यवाद, मैं कोशिश करूंगा कि एक – Tech4Wilco

    4

    कुछ विचार ... यदि एक ही उपयोगकर्ता लौट रहे हैं, तो दूसरी तालिका में डेटा कैशिंग करना बहुत उपयोगी होगा ... आप इसे केवल एक बार देखेंगे और इसे उपयोगकर्ताओं को वापस करने के लिए करेंगे। सवाल फिर से पढ़ने पर ऐसा लगता है कि आप ऐसा कर रहे हैं।

    एक और विकल्प नए थ्रेड को उजागर करना होगा जब आपको लुक-अप करने की आवश्यकता होती है। यह प्रत्येक अनुरोध के लिए एक नया धागा हो सकता है, या यदि यह संभव नहीं है तो आप लुक-अप करने और परिणामों को अपडेट करने के लिए तैयार सेवा थ्रेड तैयार कर सकते हैं।