web-dev-qa-db-fra.com

Comment utiliser STDOUT en php

J'exécute un projet qui lit un flux à partir d'un fichier txt, donc dans la CLI, j'écris:

cat texte.txt|php index.php

Dans mon index.php fichier j'ai lu le flux:

$handle = fopen ("php://stdin","r");

Maintenant j'ai un $result qui contient le résultat de mon fichier de traitement et je veux le sortir avec STDOUT, j'ai regardé dans le manuel, mais je ne sais pas comment l'utiliser, pouvez-vous s'il vous plaît me faire un exemple d'utilisation.

32
Malloc

D'accord, permettez-moi de vous donner un autre exemple pour l'utilisation de STDIN et STDOUT .

Dans PHP vous utilisez ces deux idiomes:

 $input = fgets(STDIN);

 fwrite(STDOUT, $output);

Lorsque vous êtes en ligne de commande, vous les utilisez tels quels:

 cat "input.txt"  |  php script.php   >  "output.txt"

 php script.php  < input.txt  > output.txt

 echo "input..."  |  php script.php   |  sort  |  tee  output.txt

Voilà toutes ces choses. Tuyauterie à l'entrée ou à la sortie. Et les parties entrantes apparaîtront dans STDIN, tandis que votre sortie devrait aller à STDOUT. Ne traversez jamais les ruisseaux, les amis!

51
mario

Les constantes STDIN et STDOUT sont déjà des ressources, donc tout ce que vous devez faire est

fwrite(STDOUT, 'foo');

Voir http://php.net/manual/en/wrappers.php

php: // stdin, php: // stdout et php: // stderr permettent un accès direct au flux d'entrée ou de sortie correspondant du processus PHP. Le flux fait référence à un descripteur de fichier en double, donc si vous ouvrez php: // stdin et le fermez plus tard, vous ne fermez que votre copie du descripteur - le flux réel référencé par STDIN n'est pas affecté. Notez que PHP présentait un comportement buggé à cet égard jusqu'à ce que PHP 5.2.1. Il est recommandé d'utiliser simplement les constantes STDIN, STDOUT et STDERR au lieu d'ouvrir manuellement les flux à l'aide de ces wrappers.

18
Gordon

cela devrait fonctionner pour vous

$out = fopen('php://output', 'w'); //output handler
fputs($out, "your output string.\n"); //writing output operation
fclose($out); //closing handler
16
user336883