Le composant de classe Process exécute la commande dans proc_open.
Je réécris ce package et le divise en deux packages.
veuillez utiliser ces cours. au lieu d'utiliser ces packages.
Ce package est destiné à être utilisé comme package de composition simple 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 );
→ LIRE Plus d'exemple d'utilisation
composer require takuya/process
Le processus renverra des E/S tamponnées pour la lecture/écriture
La méthode renverra le flux.
<?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() peut PIPE des programmes.
Tuyau de connexion implicite stdout -> stdin
<?php
$ proc = new Process ([ ' echo ' , ' HelloWorld ' ]);
$ fd_out = $ proc -> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> pipe ( ' cat ' )
-> wait ();
Explicitement Pipe, connectez (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 ();
Remarque : $proc2->wait()
appelez d'abord, pour éviter un verrouillage long, pour exécuter deux processus en parallèle. La raison est que la classe Process
adopte implicitement IOBuffering at wait
, donc calling wait()
signifie que l'exécution d'une boucle de mise en mémoire tampon de flux jusqu'à la fin du processus.
Aucun forfait supplémentaire requis.
Un seul fichier src/Process.php
doit être utilisé. écrivez simplement require_once comme ceci.
<?php
require_once ' src/Process.php ' ;
Cette Process class
est écrite par vanilla php . Pas de forfaits supplémentaires. Pas de poire, pas de compositeur, aucun autre package à installer.
En l'utilisant sans composer.phar
ou autre gestionnaire de packages, il vous suffit d'écrire require_once.
Plus d'utilisation, lisez les fichiers dans ce processus /samples
, /tests/Features
et ./docs
.