2012-07-16 4 views
8

मैं अपने वेब ऐप (php + js + mysql) के लिए उपयोगकर्ता गतिविधि लॉगिंग लागू करना चाहता हूं।उपयोगकर्ताओं की गतिविधि लॉगिंग के लिए सबसे अच्छा अभ्यास क्या है?

  • उन पर लॉग इन उपयोगकर्ताओं आईडी
  • सभी तालिकाओं जिसमें activity तालिका उन आईडी का उपयोग कर पंक्ति सम्मिलित करने के लिए ट्रिगर बना स्टोर करने के लिए डेटाबेस में एक अस्थायी तालिका बनाने:

    previousely, मैं इस appoach का उपयोग किया है उस अस्थायी तालिका से

अब मैं वास्तव में डेटाबेस में इतना तर्क नहीं डालना चाहता, इसलिए मेरा qiestion है: सबसे अच्छा अभ्यास क्या है? क्या मुझे वर्णित विधि के साथ रहना चाहिए, या क्या मुझे कुछ (क्या?) का उपयोग करना चाहिए?

संपादित

मैं this सवाल देखा है, लेकिन मैं जवाब में से एक के साथ वर्णित विधि की तुलना में intrested हूँ।

EDIT2

मैं क्यों लॉग की आवश्यकता है: मुझे पता है, जिसमें उपयोगकर्ता को कुछ गलत हो जाता है, तो इसके लिए जिम्मेदार की जरूरत =)

loggs बदल डेटा और नए डेटा शामिल होने को देखने के लिए क्या वास्तव में बदल गया है है ।

कई उपयोगकर्ता नहीं होंगे कि यह एक कॉर्पोरेट ऐप है और हमारी कंपनी इतनी बड़ी नहीं है।

मुख्य प्रश्न यह है कि जहां मैं जोर से लॉगिंग तर्क डालता हूं: डेटाबेस या एप्लिकेशन (PHP बैकएंड) स्तर?

+0

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

+0

@ एनबी। अपने कुछ सवालों के जवाब देने के लिए एक संपादन किया है, कृपया – k102

उत्तर

7

हमेशा की तरह, "यह निर्भर करता है"।

यदि आपके मूल व्यवसाय अवधारणाओं के समय के साथ विकास महत्वपूर्ण है, तो यह आपके डेटाबेस डिज़ाइन के साथ-साथ आपके PHP तर्क में प्रथम श्रेणी की अवधारणा होनी चाहिए। फाउलर इस बारे में "Analysis patterns" में लिखता है। यह आपको कैप्चर करने की अनुमति देता है कि किसने आपके व्यावसायिक ऑब्जेक्ट्स में कौन से बदलाव किए हैं और सवालों के जवाब दिए हैं, "जिसने प्रोजेक्ट को x से y तारीख z में बदल दिया है?", "उपयोगकर्ता एक्स ने उत्पाद को कितनी बार बदल दिया?" आदि। यह डोमेन मॉडल को और अधिक जटिल बनाता है।

यदि आपको इस स्तर के एकीकरण की आवश्यकता नहीं है, तो मेरी प्राथमिकता PHP में लॉगिंग कार्यक्षमता डालना है; ट्रिगर्स के पास डेटाबेस को धीमा करने का एक भयानक तरीका होता है, या अप्रत्याशित साइड इफेक्ट्स का कारण बनता है, या स्कीमा में बदलाव करने वाले डेवलपर्स द्वारा भुलाया जा रहा है।तो, PHP में, मैं स्पष्ट रूप से एक "पहलू लॉग इन" कथन का उपयोग कर स्पष्ट रूप से एक पहलू उन्मुख ढांचे का उपयोग करना चाहता हूं (हालांकि मैंने इसे कभी भी PHP में उपयोग नहीं किया है, केवल जावा में)।

6

लॉगिंग के लिए, आप एक टेबल logs रखना चाहते हैं, जहां आप सत्र आईडी $_SESSION['id'] (मानते हैं कि आपके पास सत्र हैं?) और उपयोगकर्ता की गतिविधि लॉग है। फिर आप एक देरी MySQL क्वेरी का उपयोग कर डालें (क्योंकि लॉग उच्च प्राथमिकता नहीं हैं):

INSERT DELAYED INTO table (session_id, activity) VALUES ('1234', 'blah'); 

विलंब आवेषण बारे में अधिक जानकारी के लिए this link का संदर्भ लें।

दूसरे शब्दों में, PHP तर्क पर सभी तर्क डालें, बस एक MySQL तालिका है जिसमें आप देरी से उपयोग करके किसी भी गतिविधि को लॉग करते हैं। यह एक फ़ंक्शन लॉग_एक्टिविटी ($ session_id, $ गतिविधि) होगा जिसे आप लॉग इन करने योग्य गतिविधि कहां से कहीं भी कॉल कर सकते हैं।

+0

एचएम देखें ... देरी 'के लिए धन्यवाद, लेकिन यह वास्तव में मैंने नहीं पूछा है। कृपया मेरा संपादन देखें – k102

+0

हां, यह वास्तव में आपने जो पूछा है और वह वास्तव में आपको चाहिए। – Doa

+0

'सभी पक्षों को PHP पक्ष पर रखें' क्यों? मेरा मतलब है कि यह डीबी तर्क से बेहतर क्यों है? – k102

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

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