Pregunta

En Linux quiero ejecutar una ventana de la barra de progreso de gnome zenity desde PHP.El funcionamiento de zenity es así:

linux-shell$ zenity --display 0:1 --progress --text='Backing up' --percentage=0
10
50
100

Entonces, el primer comando abre la barra de progreso de zenity al 0 por ciento.Luego, Zenity toma los números de entrada estándar como porcentaje de la barra de progreso (por lo que pasará del 10% al 50% y al 100% cuando escriba esos números).

Sin embargo, no puedo entender cómo hacer que PHP escriba esos números, lo he intentado:

exec($cmd);
echo 10;
echo 50;

Y:

$handle = popen( $cmd, 'w' );
fwrite( $handle, 10 );

Y:

$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w")  // stdout is a pipe that the child will write to
);

$h = proc_open($cmd, $descriptorspec, $pipes);

fwrite($pipes[1], 10);

Pero ninguno de ellos actualiza la barra de progreso.¿De qué manera puedo imitar el efecto de la entrada estándar en el shell de Linux para que zenity actualice su barra de progreso?

¿Fue útil?

Solución

Primero ejecuta el comando con una copia de la entrada estándar del script actual, no el texto que proporciona.

Tu segundo falla porque estás olvidando la nueva línea.Intentar fwrite($handle, "10\n") en cambio.Tenga en cuenta que la zenidad parece saltar al 100 % cuando se alcanza el EOF (p. ej.por el cierre implícito de $handle al final de su script PHP).

El tercero falla porque olvida la nueva línea y escribe en la canalización incorrecta.Intentar fwrite($pipes[0], "10\n") en su lugar, y recuerde la misma nota sobre EOF que se mencionó anteriormente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top