हमारी एक सेवा
हाईराइज से डेटा का विश्लेषण करने वाली दैनिक रिपोर्ट बना रही है।
हाईराइज का डेटा कई तरीकों से प्राप्त किया जा सकता है:
- CSV में निर्यात का उपयोग करें
- एपीआई का उपयोग करें
हमने CSV पर भी विचार नहीं किया और हमने एपीआई के माध्यम से अपने डेटाबेस को दैनिक रूप से अपडेट करने के लिए एक सुविधाजनक तरीका खोजने की कोशिश की।
हम निम्नलिखित के साथ आए:
- XML फ़ीड प्राप्त करें और इसे पार्स करें।
- सभी तत्काल बाल फ़ील्ड हम तालिका में फ़ील्ड मानते हैं।
- हम सभी नेस्टेड तत्वों को संबंधित तालिकाओं के रूप में मानते हैं
नमूना XML प्रतिक्रिया (https://xxx.highrisehq.com/deals.xml):

तीर उन तत्वों को इंगित करते हैं जिन्हें हम नेस्टेड मानते हैं और, तदनुसार, हम डेटा को संबंधित तालिकाओं में रखते हैं।
जैसा कि हमने XML MySQL टेबल से किया था।
- यदि डेटा में कोई आईडी फ़ील्ड है, तो हम इसे प्राथमिक पूर्णांक कुंजी मानते हैं
- अन्य सभी XML क्षेत्रों के लिए, हम टाइप को विशेषता मानते हैं (सरणी प्रकार को छोड़कर)
- नेस्टेड तत्वों के लिए, हम जाँचते हैं कि क्या उनके पास एक आईडी विशेषता है और यदि उनके पास (हमारे पास लिंक की गई तालिका है), तो हम अपनी टेबल पर <नेस्टेड टेबल नेम> को जोड़ते हैं और नेस्टेड टेबल बनाते हैं।
- हम तालिका में सभी क्षेत्रों को 3 प्रकारों में विभाजित करते हैं: पूर्णांक, डेटाटाइम और varchar / पाठ। हमारे पास केवल तभी TEXT है यदि फ़ील्ड नाम में विशिष्ट मान हैं: 'मान', 'विवरण', 'टेक्स्ट', 'बॉडी', 'मैसेज', 'डेटा', 'ब्लॉब', 'बैकग्राउंड'
आउटपुट पर हमें जो मिलता है उसका एक उदाहरण:

अब आप इस डेटा के साथ कुछ भी कर सकते हैं, रेखांकन आकर्षित कर सकते हैं, मात्राएँ गिन सकते हैं, अन्य रोचक जानकारी खींच सकते हैं।
सबसे महत्वपूर्ण बात, परिणामी कोड सभी 37signals सेवाओं के साथ काम करता है और उनकी किसी भी सेवा को सिंक्रनाइज़ कर सकता है।
बेसकैंप सिंक उदाहरण
<?php require 'SyncService.class.php'; $sync = new SyncService( array( 'db' => array( 'host' => 'localhost', 'user' => 'root', 'password' => '123', 'schema' => 'basecamp' ), 'service' => array( 'name' => 'basecamp', 'url' => 'https://xxx.basecamphq.com', 'token' => 'abcdef1234567890abcdef1234567890', 'streams' => array( '/todo_lists.xml' => 500, '/people.xml' => 500, '/projects.xml' => 500, '/account.xml' => 0, ) ), ) ); $sync->doSyncing();
जीथब पर एक उदाहरण के साथ सभी पुस्तकालय कोड।