2010-09-15 6 views
6

मुझे पता है कि धूमकेतु सर्वर तकनीकें हैं जो ऐसा करती हैं लेकिन मैं कुछ सरल और घर से उगाई जानना चाहता हूं।MySQL ट्रिगर + एक लंबे मतदान वाले अपाचे/PHP कनेक्शन को सूचित करें

जब एक MySQL तालिका में एक रिकॉर्ड डाला जाता है, तो मैं चाहता हूं कि यह किसी भी तरह से इस डेटा को PHP (या जो कुछ भी) का उपयोग करके लंबे मतदान वाले अपाचे कनेक्शन की एक श्रृंखला में संवाद करे। तो कई लोग अपने ब्राउज़र के माध्यम से "सुन रहे हैं" और दूसरा MySQL INSERT होता है, यह उनके ब्राउज़र पर भेजा जाता है और निष्पादित किया जाता है।

PHP स्क्रिप्ट को MySQL डेटाबेस को पोल करने का आसान तरीका है, लेकिन यह वास्तव में सर्वर से नहीं दबा रहा है और अनावश्यक डेटाबेस क्वेरीज़ के कुछ अस्वीकार्य आदेश प्रस्तुत करता है। मैं उस डेटा को माईएसक्यूएल से लंबे समय तक मतदान कनेक्शन में प्राप्त करना चाहता हूं, बिना श्रोताओं के पूछताछ के।

इस पर लागू करने के तरीके पर कोई विचार?

उत्तर

0

यह कुछ ऐसा है जो मैं कई सालों से ढूंढ रहा हूं। मुझे कोई कार्यक्षमता नहीं मिली है जहां SQL सर्वर INSERTS, DELETE और UPDATES पर एक संदेश निकाल देता है।

ट्राइगर्स इन घटनाओं पर एसक्यूएल चला सकते हैं, लेकिन इसका कोई उपयोग नहीं है।

मुझे लगता है कि आपको अपना सिस्टम बनाना है। आप PHP (Example in first comment) से आसानी से एक यूडीपी प्रसारित कर सकते हैं, समस्या यह है कि PHP सर्वर की तरफ चल रहा है और ग्राहक स्थिर हैं।

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

यह केवल लेखन के क्षण में कुछ विचार था ...

+0

शायद ट्रिगर memcached की तरह कुछ करने के लिए लिख सकता है और PHP कि मतदान कर सकता है? – phazei

+0

PHP स्थिर है और पृष्ठभूमि में "चल रहा" नहीं है। इसे "थ्रेड" के रूप में कैसे दिखाना है, इस पुस्तक से कुछ चालें हैं, लेकिन फिर अगली समस्या आती है, क्लाइंट पेज अपडेट करें। मैं कहूंगा कि मतदान AJAX द्वारा किया जाना है। आखिरी संशोधित तारीख (ट्रिगर्स द्वारा लिखित) के लिए मतदान के लिए पर्याप्त हो सकता है। यदि यह नया है, तो पृष्ठ को फिर से लोड करें। –

2

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

0

MySQL शायद इस समस्या के लिए सही उपकरण नहीं है। रेजिलरो ने आपके डीबी को स्विच करने का सुझाव दिया, लेकिन एक आसान समाधान रेडिस जैसे कुछ पब/उप फीचर का उपयोग करना हो सकता है।

http://redis.io/topics/pubsub

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