, पीएचपी में एक ईवेंट श्रोता बनाना एक्सएमएल सामग्री का इंतजार

वोट
18

मैं एक घटना श्रोता बनाना होगा। मैं एक नौसिखिया बहुत दयालु हो कर रहा हूँ :)

मूल रूप से मैं page1.php (php फ़ाइल) पर हूँ; मैं कुछ जानकारी जो कुछ बिंदु पर प्राप्त की जानी चाहिए के लिए page2.xml (xml फ़ाइल) की जाँच जाने के लिए एक पाश के अंदर चाहता हूँ। या तो यह सब समय की जाँच करें, या प्रतीक्षा करें और यदि कुछ जानकारी वहाँ प्राप्त हो गया है हर 5 मिनट या तो देखने के लिए। उनमें से मेरे लिए काम करते हैं।

कोई जानकारी कुछ ही मिनटों के बाद प्राप्त किया गया है, तो मैं (जब तक यह प्राप्त होता है) फिर से पाश को चलाने के लिए, अन्यथा, आगे बढ़ने और नई-नई प्राप्त जानकारी के साथ कुछ करना चाहते हैं। इस भाग के साथ मैं कोई समस्या नहीं है, बस घटना श्रोता ही। मैं समारोह मैं कहीं भी उपयोग करना चाहिए नहीं मिल सका। :( मैं केवल की जाँच करें और हर बार xml फ़ाइल की सामग्री पुनर्प्राप्त करने की जरूरत है।

मैं इतना यकीन है कि कैसे मैं इस बारे में जाना चाहिए अगर वहाँ एक समारोह जो ऐसा करता नहीं है बस नहीं हूँ, लेकिन मैं बहुत जब मैं घटना श्रोता php के लिए खोज नहीं पा सके।

किसी भी मदद की सराहना की जाएगी किया: संदर्भ ट्यूटोरियल / नमूना कोड के लिए / यहां तक ​​कि बस मुझे बता क्या खोजशब्दों मैं तलाश रहा है या क्या मैं ऐसा करने के लिए में पहली सीखने की जरूरत होनी चाहिए।

धन्यवाद!

21/12/2011 को 23:17
उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
1

ठीक है, पहले आप शब्दावली का उपयोग कर रहे समझना चाहिए। पीएचपी एक घटना चालित भाषा है, यह एक अनुरोध पर ही आधारित भाषा है नहीं है। एक अनुरोध वेब सर्वर में आता है, पीएचपी यह पार्स करके एक प्रतिक्रिया वापस निवेदक को भेजा जाता है। किसी भी बिंदु पर वहाँ ईवेंट के कारण है कि आप प्रक्रिया या संभाल कर सकते हैं कर रहे हैं। आप अपनी खुद की "घटना प्रणाली 'लागू कर सकते हैं लेकिन अंत में यह है कि क्या अपने यूज-केस जरूरत पर जोर देता की तुलना में अधिक काम है।

आपका सबसे अच्छा शर्त संभावना AJAX का उपयोग कर रहा है और लगातार अपने PHP स्क्रिप्ट का अनुरोध करने की जब तक आप डेटा है कि आप देख रहे हैं वापस जाएँ। अंत में आप के बारे में जानने की आवश्यकता होगी XMLHttpRequestजावास्क्रिप्ट वस्तु। आप कैसे अतुल्यकालिक अनुरोध का उपयोग जावास्क्रिप्ट आप देख सकते हैं बनाने के लिए समझ में करने के बाद setInterval()कैसे बार-बार अनुरोध करने के लिए विधि।

एक बार जब आप बार-बार अतुल्यकालिक अनुरोध कर सकता है यह एक वेबपेज जहाँ आप AJAX अनुरोध भेजे जाने के लिए ट्रिगर कर सकते हैं बनाने की एक अपेक्षाकृत सरल प्रक्रिया होनी चाहिए।


अपने PHP कोड में एक पाश के लिए कोई जरूरत नहीं है। पाश प्रभावी रूप से दूसरे छोर पर किया जाता है। यहाँ एक शाब्दिक कार्यप्रवाह है कि आप का पालन दे सकता है:

  1. आपके AJAX कॉल को गति प्रदान करने और उन्हें को गति प्रदान करने के लिए बनाया गया एक साइट पर जाएं।
  2. अपने PHP स्क्रिप्ट के लिए अपने async अनुरोध करें।
  3. अपने PHP स्क्रिप्ट के अंदर एक्सएमएल फ़ाइल को खोलने और आवश्यक सामग्री के लिए जाँच करें।
  4. एक JSON ऑब्जेक्ट के रूप में एक प्रतिक्रिया लौटें। एक प्रतिक्रिया डेटा मतलब हो सकता है अद्यतन नहीं किया गया था, अन्य प्रतिक्रिया का मतलब है डेटा अपडेट किया गया।
  5. , प्रतिसाद पार्स यदि डेटा कदम (2) द्वारा बार-बार अद्यतन नहीं किया गया था। यदि डेटा अद्यतन किया गया था तो चरण (6) जारी है।
  6. एक जश्न मनाने के ग्रीटिंग है कि आपके डेटा अद्यतन किया गया था या एक सूचना है कि हम अभी भी डेटा अपडेट होने में के लिए इंतजार कर रहे हैं प्रदर्शित करें। शायद आप पक्ष के लिए रवाना, साथ ही प्रयासों की संख्या हो सकती है।
21/12/2011 को 23:57
का स्रोत उपयोगकर्ता

वोट
0

मैं इस PHP में एक इनबॉक्स पार्सर लिखने जैसा कुछ किया। आप श्रेष्ठ हैं विकल्प के लिए है:

कोड page1.phpहै जिसमें आप सिर्फ 2 काम करने होंगे: से XML पढ़ा page2.xmlऔर अगर वहाँ कुछ है 'नई' सिर्फ डेटा पार्सिंग कोड निष्पादित।

सेटअप एक क्रॉन नौकरी (यदि आप लिनक्स के तहत कर रहे हैं) हर 5 मिनट या तो अमल करने के लिए (क्रॉन आदेश की तरह कुछ है: php /path/to/page1.php)। उसी तरह, आप Windows आप सेटअप एक निर्धारित कार्य कर सकते हैं चल रहा है और एक ही आदेश पर अमल कर रहे हैं। ध्यान रखें कि आपका पीएचपी स्थापना करने के लिए पूरा पथ में होना चाहिए बनें PATHवातावरण चर।

22/12/2011 को 00:20
का स्रोत उपयोगकर्ता

वोट
1

मैं निम्नलिखित किया:

स्वचालित रूप से डेटाबेस के लिए हर बार कुछ नया करने में आया था बचा लिया।

फिर एक php पाश है कि हर कुछ मिनट अगर वहाँ डेटाबेस जो इस नई घटना (शामिल है कि वह पिछले कुछ मिनटों का समय सीमा के भीतर happenned) के मापदंडों फिट बैठता है में कुछ नया है देखने के लिए जाँच की भाग गया। मैं प्रयोग किया जाता है flush();और फिर sleep(120);पाश में हर कुछ मिनटों चालू रखने के लिए पाश पाने के लिए, जब तक नई जानकारी जो मामले में यह होगा में में आया था break();या die();

03/01/2012 को 23:57
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more