O componente da classe Process executa o comando em proc_open.
Eu reescrevo este pacote e divido em dois pacotes.
por favor use essas classes. em vez de usar estes pacotes.
Este pacote destina-se a ser usado como um pacote compositor não complicado de ARQUIVO ÚNICO.
<?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 );
→ LEIA mais amostra para uso
composer require takuya/process
O processo retornará IO em buffer para leitura/gravação
O método retornará stream.
<?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() pode fazer programas PIPE.
Tubo de conexão implícito stdout -> stdin
<?php
$ proc = new Process ([ ' echo ' , ' HelloWorld ' ]);
$ fd_out = $ proc -> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> wait ();
Pipe explicitamente, 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()
chame primeiro, para evitar bloqueios longos, para executar dois processos em paralelo. O motivo é que a classe Process
adota IOBuffering implícito em wait
, portanto, calling wait()
significa que executa o loop de buffer de fluxo até o final do processo.
Não são necessários pacotes extras.
Um único arquivo src/Process.php
precisa ser usado. basta escrever require_once assim.
<?php
require_once ' src/Process.php ' ;
Esta Process class
foi escrita por vanilla php . Sem pacotes extras. Sem pêra, sem compositor, nenhum outro pacote precisa ser instalado.
Usando isso sem composer.phar
ou outro gerenciador de pacotes, tudo que você precisa é apenas escrever require_once.
Mais uso, leia os arquivos neste procjet /samples
, /tests/Features
e ./docs
.