Компонент класса Process выполняет команду в proc_open.
Я переписываю этот пакет и разделяю его на два пакета.
пожалуйста, используйте эти классы. вместо использования этих пакетов.
Этот пакет предназначен для использования как ОДНОФАЙЛНЫЙ несложный композиторский пакет.
<?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
Процесс вернет буферизованный ввод-вывод для чтения/записи.
Метод вернет поток.
<?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
принимает подразумеваемый IOBuffering при wait
, поэтому calling wait()
означает, что цикл буферизации потока выполняется до завершения процесса.
Никаких дополнительных пакетов не требуется.
Необходимо использовать один файл src/Process.php
. просто напишите require_once вот так.
<?php
require_once ' src/Process.php ' ;
Этот Process class
написан на ванильном php . Никаких дополнительных пакетов. Нет груши, нет композитора, никаких других пакетов устанавливать не нужно.
Используя это без composer.phar
или другого менеджера пакетов, все, что вам нужно, это просто написать require_once.
Подробнее об использовании. Прочтите файлы в этом файле /samples
, /tests/Features
и ./docs
.