2012-05-14 6 views
7

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

मैंने नए और एनसीआरईएस पीईसीएल एक्सटेंशन में देखा है लेकिन दोनों मेरी जरूरतों को पूरा नहीं करते हैं।

+2

क्या ajax के बारे में? – Jrod

+1

मैं इस कार्य के लिए बैश का उपयोग करने का सुझाव दूंगा। –

+1

मुझे लगता है कि आप इसका उपयोग करने में सक्षम हो सकते हैं: http://stackoverflow.com/questions/3684367/php-cli-how-to-read-a-single-character-of-input-from-the इसके बिना-बिना प्रतीक्षा-एफ – h00ligan

उत्तर

-1

मेरी सलाह किसी भी समाधान से बचने का प्रयास करेगी जो PHP से बाहर निकलने के दौरान चल रही प्रक्रियाओं को छोड़ने के बारे में बात करेगी। JSON

window.setInterval(checkstat, 10000); //10 second interval 

function checkstat() { 

    //Change a div with id stat to show updating (don't need this but it's nice) 
    $('#stat').html('Updating...'); 

    $.get('/getmystats.php?option=blah', function(data) { 
     //Update the results when the data is returned. 
     $('#stat').html(data); 
    }); 

} 

आप अपने पृष्ठ पर एक से अधिक क्षेत्र अद्यतन करने की जरूरत है, तो आप एक कॉल करना है लेकिन लौट सकते हैं या एक्सएमएल और फिर यहां तरीका देखें: jQuery का एक सा के साथ यह करने के लिए की एक बहुत सरल उदाहरण है आवश्यकतानुसार बिट्स को पॉप्युलेट करें।

+1

मुझे नहीं लगता कि वह jquery की तलाश में है क्योंकि वह php-cli का उपयोग करना चाहता है। – Zombaya

+0

मैं कमांड लाइन पर काम कर रहा हूं। कोई वेबसर्वर स्थापित नहीं है और केवल प्रति एसएसएच तक पहुंच है –

0

मुझे नहीं लगता कि आप इसे PHP सीएलआई के साथ कर सकते हैं। जैसा कि मुझे पता है, PHP के साथ स्क्रिप्ट की व्याख्या करते समय, आप केवल अंतिम आउटपुट देख सकते हैं।

0

मुझे लगता है कि आप ncurses चाहते हैं। यदि आप सरल उदाहरण सी कोड here को परिवर्तित कर सकते हैं, जिसे आप PHP wrapper के साथ सक्षम होना चाहिए, तो आपके पास अपनी समस्या को हल करने के लिए आपका "बूटस्ट्रैप" होगा।

अपने कोड को कहीं भी ब्लॉग करना सुनिश्चित करें! :)

1

libevent http://www.php.net/manual/en/book.libevent.php

के लिए जाओ मोटे तौर पर इस तरह का कोड के साथ सांत्वना को सुनने, जबकि आप अपने मुख्य पाश चला सकते हैं:

<?php 
// you need libevent, installable via PEAR 
$forever=true; 
$base=event_base_new(); 
$console=event_buffer_new(STDIN,"process_console"); 
event_buffer_base_set($console,$base); 
event_buffer_enable($console,EV_READ); 
while ($forever) { 
    event_base_loop($base,EVLOOP_NONBLOCK); // Non blocking poll to console listener 
    //Do your video update process 
} 
event_base_free($base); //Cleanup 
function process_console($buffer,$id) { 
    global $base; 
    global $forever; 
    $message=''; 
    while ($read = event_buffer_read($buffer, 256)) { 
     $message.=$read; 
    } 
    $message=trim($message); 
    print("[$message]\n"); 
    if ($message=="quit") { 
     event_base_loopexit($base); 
     $forever=false; 
    } 
    else { 
     //whatever..... 
    } 
} 
संबंधित मुद्दे

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