HTTP

2011-05-31 13 views
6

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

मैं इस के साथ प्रयोग कर सकते हैं लेकिन आशा करता हूं वहाँ "और अधिक पूर्ण" कुछ है: following a log file over http

+0

का हिस्सा प्राप्त करने का प्रयास कर रहा है http://www.coldfusionjedi.com/index.cfm/2009/4/12/Using-ColdFusion-to-get-the- एंड-ऑफ-ए-फाइल - आपको केवल प्रत्येक मिनट या तो रीफ्रेश जोड़ने की आवश्यकता है .. –

+0

आप HTML5 की से कोशिश कर सकते हैं यदि आप अच्छे स्ट्रीमिंग समाधान चाहते हैं तो rver-sent घटनाक्रम। – Henry

उत्तर

0

निम्नलिखित छद्म-कोड this Java solution से प्रेरित है और सभी पर परीक्षण नहीं किया गया:

if (NOT structKeyExists(application, "log") { 
    application.log = fileOpen('log.txt', 'read') 
} 

while(NOT FileisEOF(application.log)) { 
    writeOutput(fileReadLine(application.log) & "<br/>"); 
} 

इसे मेटा रीफ्रेश वाले पृष्ठ पर रखें और मुझे लगता है कि आप शायद व्यवसाय में हैं।

+0

धन्यवाद, संतरे। लॉग फाइलों के साथ सामान्य समस्याएं हैं जैसे कि वे बड़े हैं। मैं नवीनतम 10 लाइनों को पाने के लिए बार-बार 1 एमबी डेटा भेजना नहीं चाहता हूं। अब मैं सामग्री-लंबाई को देखने के लिए AJAX और HTTP के HEAD अनुरोध का उपयोग कर पूरी तरह क्लाइंट-साइड के बारे में सोच रहा हूं। यदि वह पिछले मान से बदल गया है, तो HTTP श्रेणी फ़ील्ड का उपयोग करके प्राप्त करें, केवल अद्यतन डेटा को DOM में जोड़ने के लिए प्राप्त करें। ऐसा कुछ लगता है जो पहले से मौजूद होना चाहिए, इसलिए मैं चारों ओर गुगल कर रहा हूं ... – DaveBurns

+0

आप वही डेटा बार-बार नहीं भेज रहे हैं क्योंकि फ़ाइल संदर्भ केवल एक बार बनाया गया है और एप्लिकेशन स्कोप में जारी है। तो हर ताज़ा केवल नए जोड़े गए लाइन दिखाता है। – orangepips

+0

आह, ज़ाहिर है। आपको लगता है कि उपर्युक्त लॉग रोल ओवर को कैसे संभालेगा? – DaveBurns

-1

मुझे पता है कि यह बहुत पुराना स्कूल है, लेकिन क्या आपने डेटाबेस में लॉगिंग करने पर विचार किया है? यदि आप तालिका में लॉग प्रविष्टियों को टाइमस्टैम्प करते हैं तो आप HTTP कैशिंग हेडर का उपयोग सर्वर से संवाद करने के लिए कर सकते हैं कि आपको कौन सा नया डेटा देखना चाहिए।

+1

यह मेरे दिमाग को पार कर गया। डेटाबेस में लॉग इन करना उन चीजों में से एक है जो लोग प्यार करते हैं या नफरत करते हैं - किसी भी तरह से यह धार्मिक हो जाता है। मैं उन लोगों में से एक हूं जो महसूस करते हैं कि यह बहुत भारी है। हालांकि चर्चा के लिए अच्छा विषय - धन्यवाद। – DaveBurns

1

आप आप निम्नलिखित PHP स्क्रिप्ट कर सकते हैं:

<?php 
header("Content-Type: text/plain"); 
set_time_limit(0); 
passthru("tail -F -n +0 log.txt"); 
?> 
+0

मैंने मैक ओएस एक्स पर/var/log/syslog पर यह कोशिश की और ब्राउज़र विंडो में कुछ भी दिखाई नहीं देता जब तक कि मैं php सर्वर को रोक नहीं देता। किसी भी विचार को समय-समय पर उत्पादन को कैसे फ़्लश करना है? –

0

मैं 'बनबिलाव' का उपयोग कर के साथ अपने उपयोग के मामले (tail.sh)

यह निम्नलिखित बैश स्क्रिप्ट बनाने फ़ाइलों की सूची प्राप्त जहाँ से फ़ाइल आकार मिल इसकी आवश्यकता है, और इन्फिनिटी लूप में फ़ाइल