2012-05-14 29 views
7

Quiero escribir una pequeña herramienta de administración para supervisar los procesos de mi servidor, mi problema es ahora, ¿cómo podría esperar la entrada del usuario y al mismo tiempo actualizar la pantalla con las estadísticas actuales? ¿Es posible con PHP-CLI o hay algún truco para hacer esto que me falta actualmente?¿Es posible actualizar la pantalla y esperar la entrada del usuario al mismo tiempo con PHP?

He investigado las extensiones PECL newt y ncurses, pero ambas no parecen satisfacer mis necesidades.

+2

¿Qué pasa con el Ajax? – Jrod

+1

Sugeriría usar Bash para esta tarea. –

+1

Creo que es posible que pueda utilizar esto: http://stackoverflow.com/questions/3684367/php-cli-how-to-read-a-single-character-of-input-from-the -tty-without-waiting-f – h00ligan

Respuesta

-1

Mi consejo sería tratar de evitar cualquier solución que hable de dejar los procesos en ejecución al salir de PHP. Aquí es un ejemplo muy simple de cómo hacerlo con un poco de 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); 
    }); 

} 

Si usted es necesidad de actualizar más de un área en su página, puede realizar una llamada, pero regresa JSON o XML y luego rellene los bits según sea necesario.

+1

No creo que esté buscando jquery ya que quiere usar php-cli. – Zombaya

+0

Estoy trabajando en la línea de comando. Ningún servidor web instalado y solo acceso por ssh –

0

No creo que pueda hacerlo con PHP CLI. Como sé, cuando interpretas el script con PHP, solo puedes ver el resultado final.

0

Creo que quieres ncurses. Si puede convertir el ejemplo simple código C here, que debería poder utilizar con el envoltorio PHP, tendría su "arranque" para resolver su problema.

¡Asegúrese de publicar su código en algún lugar! :)

1

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

podrá ejecutar el bucle principal mientras se escucha a la consola con un código más o menos como ésta:

<?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..... 
    } 
} 
Cuestiones relacionadas