El componente de clase Process ejecuta el comando en proc_open.
Reescribo este paquete y lo divido en dos paquetes.
por favor use estas clases. en lugar de utilizar estos paquetes.
Este paquete está destinado a ser utilizado como un paquete de composición de ARCHIVO ÚNICO y no complicado.
<?php
$ proc1 = new Process ( ' sh ' );
$ fd_out = $ proc1 -> setInput ( ' echo HelloWorld ' )
-> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> pipe ([ ' grep ' , ' Hello ' ])
-> wait ();
$ ret = stream_get_contents ( $ fd_out );
→ LEER más Muestra de uso
composer require takuya/process
El proceso devolverá IO almacenada en búfer para lectura/escritura
El método devolverá la secuencia.
<?php
$ proc = new Process ([ ' echo ' , ' HelloWorld ' ]);
$ fd_out = $ proc -> run ();
$ output = stream_get_contents ( $ fd_out );
// you can reuse, re-read output
fseek ( $ fd_out , 0 );
$ str = stream_get_contents ( $ fd_out );
<?php
$ proc = new Process ( ' sh sleep.sh ' );
$ proc -> start ();
echo ' started ' ;
$ proc -> join ();
Process#pipe() puede canalizar programas.
Tubería de conexión implícita stdout -> stdin
<?php
$ proc = new Process ([ ' echo ' , ' HelloWorld ' ]);
$ fd_out = $ proc -> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> wait ();
Tubería explícita, conecte (Proc1#)stdout -> (Proc2#)stdin
<?php
$ proc1 = new Process ([ ' echo ' , ' HelloWorld ' ]);
$ proc2 = new Process ([ ' cat ' ]);
[ $ p1_out , $ p1_err ] = $ proc1 -> start ();
$ proc2 -> setInput ( $ p1_out );
$ proc2 -> start ();
$ proc2 -> wait ();
$ proc1 -> wait ();
Aviso: $proc2->wait()
llame primero, para evitar un bloqueo prolongado, para ejecutar dos procesos en paralelo. La razón es que la clase Process
adopta IOBuffering implícito en wait
, por lo que calling wait()
significa que se ejecuta un bucle de almacenamiento en búfer de flujo hasta que finaliza el proceso.
No se requieren paquetes adicionales.
Es necesario utilizar un archivo único src/Process.php
. simplemente escribe require_once así.
<?php
require_once ' src/Process.php ' ;
Esta Process class
está escrita por Vanilla PHP . Sin paquetes adicionales. Sin pera, sin compositor, no es necesario instalar otros paquetes.
Al usar esto sin composer.phar
u otro administrador de paquetes, todo lo que necesita es simplemente escribir require_once.
Más uso, lectura de archivos en este procjet /samples
, /tests/Features
y ./docs
.