Process 클래스 구성 요소는 proc_open에서 명령을 실행합니다.
나는 이 패키지를 다시 작성하고 두 개의 패키지로 나눴습니다.
이 수업을 이용해주세요. 이 패키지를 사용하는 대신.
이 패키지는 복잡한 작성기 패키지가 아닌 SINGLE-FILE로 사용하기 위한 것입니다.
<?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 );→ 자세한 사용법 샘플을 읽어보세요
composer require takuya/process프로세스는 읽기/쓰기를 위해 버퍼링된 IO를 반환합니다.
메소드가 스트림을 반환합니다.
<?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()는 프로그램을 PIPE할 수 있습니다.
암시적 연결 파이프 stdout -> stdin
<?php
$ proc = new Process ([ ' echo ' , ' HelloWorld ' ]);
$ fd_out = $ proc -> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> wait ();명시적으로 파이프하고 (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 (); 주의 사항: $proc2->wait() 먼저 호출하여 긴 잠금을 피하고 두 프로세스를 병렬로 실행하십시오. 그 이유는 Process 클래스가 wait 에서 묵시적인 IOBuffering을 채택하기 때문입니다. 따라서 calling wait() 것은 프로세스가 끝날 때까지 스트림 버퍼링 루프를 실행한다는 의미입니다.
추가 패키지가 필요하지 않습니다.
단일 파일 src/Process.php 사용해야 합니다. 이렇게 require_once를 작성하면 됩니다.
<?php
require_once ' src/Process.php ' ; 이 Process class 바닐라 PHP 로 작성되었습니다. 추가 패키지가 없습니다. 배 없음, 작곡가 없음, 다른 패키지를 설치할 필요가 없습니다.
composer.phar 이나 다른 패키지 관리자 없이 이것을 사용하면, require_once만 작성하면 됩니다.
추가 사용법, 이 procjet /samples , /tests/Features 및 ./docs 에서 파일을 읽어보세요.