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.
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!
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.
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