2012-05-14 9 views
7

Voglio scrivere un piccolo strumento di gestione per supervisionare i miei processi server, il mio problema è ora, come posso aspettare l'input dell'utente e allo stesso tempo aggiornare lo schermo con le statistiche correnti? È persino possibile con PHP-CLI o ci sono trucchi per fare ciò che mi manca attualmente?E 'possibile aggiornare lo schermo e attendere l'input dell'utente allo stesso tempo con PHP?

Ho esaminato estensioni PECL newt e ncurses ma entrambe non sembrano soddisfare le mie esigenze.

+2

Che dire di Ajax? – Jrod

+1

Suggerirei di utilizzare Bash per questa attività. –

+1

Penso che potresti essere in grado di utilizzare questo: http://stackoverflow.com/questions/3684367/php-cli-how-to-read-a-single-character-of-input-from-the -tty-without-waiting-f – h00ligan

risposta

-1

Il mio consiglio sarebbe di cercare di evitare qualsiasi soluzione che parli di lasciare processi in esecuzione mentre si esce da PHP. Ecco un esempio molto semplice di come farlo con un po 'di jQuery:

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); 
    }); 

} 

Se siete bisogno di aggiornare più di un'area sulla tua pagina, si può fare una chiamata, ma ritorni JSON o XML e quindi popolare i bit come richiesto.

+1

Non penso che stia cercando jquery dal momento che vuole usare php-cli. – Zombaya

+0

Sto lavorando alla riga di comando. Nessun server Web installato e accesso solo per SSH –

0

Non penso che tu possa farlo con PHP CLI. Come so, quando interpreto lo script con PHP, puoi solo visualizzare l'output finale.

0

Penso che tu voglia ncurses. Se riesci a convertire il semplice esempio di codice C here, che dovresti essere in grado di utilizzare con il wrapper PHP, avresti il ​​tuo "bootstrap" per risolvere il tuo problema.

Assicurati di inserire il tuo codice blog da qualche parte! :)

1

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

È possibile eseguire il ciclo principale durante l'ascolto di consolarsi con un codice più o meno come questo:

<?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..... 
    } 
} 
Problemi correlati