2011-10-08 4 views
5

संदर्भ के लिए, एक इतने पर सवाल यह है कि इस सवाल का प्रासंगिक है कि मैं हाल ही में पूछा है: How to model Friendship relationshipsसोशल नेटवर्क वातावरण में, वैश्विक स्तर पर दोस्ती की जांच करने का सबसे आसान तरीका क्या होगा?

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

उदाहरण के लिए, मैंने अभी एक टिप्पणी प्रणाली स्थापित की है, जिससे उपयोगकर्ता समाचार पोस्ट पर टिप्पणियां पोस्ट कर सकते हैं। हालांकि, यह दोस्तों तक ही सीमित नहीं है, और यह होना चाहिए (और बाद में पोस्ट के लेखक द्वारा वैकल्पिक बनाया जाना चाहिए)।

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

इस तरह के मुद्दों को जानना साइट पर कई बार उठ जाएगा, दोस्ती की जांच करने का सबसे आसान तरीका क्या होगा? क्या मैं किसी भी तरह से किसी भी तरह के सत्र सरणी में डेटाबेस से सभी दोस्तों की उपयोगकर्ता आईडी खींच सकता हूं और फिरif(in_array($friends))कर सकता हूं जब भी मुझे यह निर्धारित करने की आवश्यकता होती है कि प्रश्न में व्यक्ति वर्तमान में लॉग इन उपयोगकर्ता का मित्र है या नहीं? मेरे सिर के ऊपर से, ऐसा लगता है जैसे यह ठीक काम करेगा, लेकिन मुझे पहले आपका इनपुट चाहिए।

ऊपर से जो प्रश्न मैंने लिंक किया है, वह बताता है कि मेरी दोस्ती तालिका कैसे काम करती है, अगर इससे आपको मेरी मदद करने में मदद मिलती है।

+0

'MY_DATA_ACCESS_LAYER.IS_FRIEND (my_id, other_id)' - डेटाबेस का उपयोग करें। डेटाबेस से प्यार करो। बाद में "अन्य सामान" के बारे में चिंता करें। (एक छोटा विस्तार यह एक बार में प्रक्रिया करने के लिए कई आईडी में लेना है; बिंदु यह है: यदि यह डीएएल में छिपा हुआ है, तो यह वास्तव में कोई फर्क नहीं पड़ता है और कब - लेकिन वास्तव में * अगर * - प्रदर्शन * है * इस मुद्दे पर पहुंचने के कई तरीके हैं।) –

+0

@pst, क्या आप मुझे थोड़ा बेहतर समझाने के बारे में सोचेंगे? वास्तव में 'MY_DATA_ACCESS_LAYER.IS_FRIEND (my_id, other_id) क्या है और मैं इसका उपयोग कैसे करूं? क्या आप एक उदाहरण प्रदान कर सकते हैं? – vertigoelectric

+0

यह डीएएल (डेटा एक्सेस लेयर) का हिस्सा है और "डेटाबेस का उपयोग करेगा"। नाम अत्याचारी है और बाहर खड़े होने के लिए चुना गया था। अलग-अलग ढांचे विभिन्न डीएएल दृष्टिकोणों को सुविधाजनक बनाएंगे, लेकिन ऐसा लगता है कि यह पहले से मौजूद है: यही है, * सत्र या इन_एरे सामानों के बारे में चिंता न करें।केवल "सिद्ध डीबी उपयोग सीमित" के बारे में चिंता करें जब एक * साबित * प्रदर्शन उपयोग-मामला है जो आवश्यकताओं को पूरा करने में विफल रहता है। –

उत्तर

0

वास्तव में, सत्र में मित्र सरणी को व्यवस्थित करना बहुत बुरा विचार है। यदि सत्र चर के बाद कोई नया मित्र जोड़ता है तो क्या होता है? यह सत्र में अद्यतन नहीं होता है।

आप दोस्तों की सूची एक ही पृष्ठ पर समय की एक बहुत की जाँच की जाएगी के बाद से, क्यों बस इसे क्वेरी और एक स्थानीय सरणी है कि आप एक ही पृष्ठ पर उपयोग जारी रख सकते में संग्रहीत नहीं।

जब पृष्ठ निष्पादित हो जाता है, तो सरणी को त्याग दिया जाएगा।

तो मूल रूप से, आप केवल सूची को एक बार पूछेंगे।

एक सिफारिश कार्यान्वयन ऊपर टिप्पणी में "pst" की सलाह का पालन करने के लिए, और सिर्फ हर बार जब आप पहली संबंध लगता है, कि के रूप में लागू करने के लिए सरल है की जरूरत के लिए क्वेरी किया जाएगा। बाद में, जब क्वेरी की गति एक समस्या बनने लगती है, तो आप उस विधि के आंतरिक परिवर्तन को स्थानीय सरणी में कैश करने के लिए बदल सकते हैं जब इसे पहली बार चीजों को गति देने के लिए बुलाया जाता है। (प्रोसेसर उपयोग के लिए स्मृति उपयोग का आदान-प्रदान)।

+0

उत्तर के लिए धन्यवाद। ठीक है, जैसा कि अब है, मेरे पास एक प्रश्न है जो दो उपयोगकर्ताओं के बीच मौजूदा, वैध मिलान के लिए 'दोस्ती' तालिका की जांच करता है। यदि पंक्तियों की संख्या शून्य नहीं है, तो दोस्ती निर्धारित होती है। स्थानीय सरणी विधि का उपयोग करने के लिए, मुझे तालिका से सभी वैध दोस्ती मैचों को खींचने के लिए अपनी क्वेरी बदलने की आवश्यकता होगी, और उसके बाद परीक्षण करें। मुझे अब एहसास है कि सरणी विचार कम कुशल है। हालांकि, यह मेरे पास एक सवाल उठाया। क्या कोई ऐसा बिंदु आता है जिसमें आप डेटाबेस से अक्सर पूछताछ कर सकते हैं, या क्या इससे कोई फर्क नहीं पड़ता? – vertigoelectric

+0

मेरा लेना यह है कि डेटाबेस क्वेरी सस्ता हो रही है, सीपीयू पावर सस्ता हो रही है। असल में, कंप्यूटर की क्षमताओं हर दिन सस्ता हो रही है। तो सबसे अच्छी बात यह है कि आपको सही बात करना है। इसे सही तर्क के साथ पहले काम करें। फिर देखें कि इसे अनुकूलित करने की आवश्यकता है या नहीं। यदि यह बिना किसी अनुकूलन के तेज़ चलता है, तो आपने अभी बहुत समय बचाया है। यदि यह शो चलाता है, कम से कम आपके कोड आसानी से किसी के द्वारा समझा जाता है, क्योंकि कोड को तेज़ करने का प्रयास करने के लिए कोई अजीब तर्क नहीं है। यह कोड को बनाए रखने और अनुकूलित करने के लिए आसान बना देगा। – iWantSimpleLife

+0

आपको सबसे अधिक कोड लिखने की आवश्यकता होगी, फिर बेंच वास्तविक लाइव स्थितियों के खिलाफ चिह्नित करें, फिर आप यह तय कर सकते हैं कि प्रश्नों की संख्या बहुत अधिक है या नहीं। लेकिन अंगूठे के नियम के रूप में, मैं प्रति PHP पृष्ठ पर 50 प्रश्नों पर रुकने की कोशिश करता हूं। – iWantSimpleLife

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