Die Process-Klassenkomponente führt den Befehl in proc_open aus.
Ich schreibe dieses Paket neu und teile es in zwei Pakete auf.
Bitte nutzen Sie diese Klasse. anstatt diese Pakete zu verwenden.
Dieses Paket soll als SINGLE-FILE und nicht als kompliziertes Composer-Paket verwendet werden.
<?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 );
→ Weiteres LESEN Anwendungsbeispiel
composer require takuya/process
Der Prozess gibt gepufferte E/A zum Lesen/Schreiben zurück
Die Methode gibt den Stream zurück.
<?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() kann PIPE-Programme ausführen.
Implizite Connect-Pipe stdout -> stdin
<?php
$ proc = new Process ([ ' echo ' , ' HelloWorld ' ]);
$ fd_out = $ proc -> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> wait ();
Explizit Pipe, verbinden Sie (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 ();
Hinweis: Rufen Sie zuerst $proc2->wait()
auf, um lange Sperren zu vermeiden und zwei Prozesse parallel auszuführen. Der Grund dafür ist, dass Process
beim wait
implizites IOBuffering übernimmt. calling wait()
bedeutet also, dass die Stream-Pufferschleife bis zum Ende des Prozesses ausgeführt wird.
Keine zusätzlichen Pakete erforderlich.
Es muss eine einzelne Datei src/Process.php
verwendet werden. Schreiben Sie einfach require_once so.
<?php
require_once ' src/Process.php ' ;
Diese Process class
wurde von Vanilla PHP geschrieben. Keine zusätzlichen Pakete. Kein Pear, kein Composer, keine weiteren Pakete müssen installiert werden.
Wenn Sie dies ohne composer.phar
oder einen anderen Paketmanager verwenden, müssen Sie lediglich require_once schreiben.
Weitere Verwendungsmöglichkeiten: Lesen Sie die Dateien in diesem Projekt /samples
, /tests/Features
und ./docs
.