PHP는

2012-01-08 4 views
22

나는, TXT 파일에서 스트림을 읽어 프로젝트로 실행하고 있습니다에서 STDOUT를 사용하는 방법, 내가 쓰기 : 내 index.php 파일에서PHP는

cat texte.txt|php index.php 

내가 스트림을 읽어

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

이제 내 처리 파일의 결과가 포함 된 $result이 있는데이 파일을 STDOUT과 함께 출력하고 싶습니다. 설명서를 살펴 봤지만 사용 방법을 모르겠습니다. 사용 예제.

+3

무엇을 시도 했습니까? 너도 해봤 니? 'print'와'echo'? –

+0

예, 제 프로젝트 요구 사항은 STDOUT을 사용하고, 인쇄하고 STDOUT 스트림의 일부를 반향시킵니다. – Malloc

+0

예, @ Cicada와 같은 표준 에코와 프린트는 STDOUT으로갑니다. – hakre

답변

35

그래, STDINSTDOUT 사용에 대한 또 다른 예를 들어 보겠습니다.

$input = fgets(STDIN); 

fwrite(STDOUT, $output); 

이 때 명령 줄에서 당신은 그들을 활용 :

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

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

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

이 모든 것을 할 수 있다는

는 PHP에서이 두 숙어를 사용합니다. 배관 연결 또는 배관 연결. 들어오는 부분은 STDIN에 표시되는 반면 출력은 STDOUT으로 표시됩니다. 스트림을 교차시키지 마십시오. 여러분!

+0

웹 응용 프로그램 컨텍스트에서 이러한 두 개의 스트림을 사용합니까? – Sajuuk

+0

정상적으로는 아닙니다. webserver + 클라이언트에 출력을 보내려면 echo/print/STDOUT 만 사용하십시오. STDERR을 통해 전송되는 모든 정보는 webservers error.log에 저장됩니다 (구성된 경우). – mario

12

이 당신

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

이것은 완전히 과잉입니다. –

+2

@ Cicada : Well * tookill *? ;) – hakre

+0

나는 대답이 잘못되었다는 것을 이해하지 못한다. 나는 시도했다. 그리고 그것은 효과가 있었다. ((: 나는 나쁜 commentation이 이것을 일으켰다 고 생각한다.) –

15

상수에 대한 작업을해야 STDINSTDOUThttp://php.net/manual/en/wrappers.php

PHP를 참조하십시오 그래서 당신이 할 필요가

fwrite(STDOUT, 'foo'); 

이며, 이미 자원입니다 :// stdin, php : // stdout 및 php : // stderr는 correspondingp에 직접 액세스 할 수있게합니다. PHP 프로세스의 입력 또는 출력 스트림. 스트림은 중복 된 파일 디스크립터를 참조하므로, php : // stdin을 열고 나중에 닫으면 디스크립터의 사본 만 닫습니다. STDIN에 의해 ​​참조되는 실제 스트림은 영향을받지 않습니다. PHP 5.2.1까지는 PHP가 버그가 있음을 알 수 있습니다. 이러한 래퍼를 사용하여 수동으로 스트림을 여는 대신 STDIN, STDOUT 및 STDERR 상수를 사용하는 것이 좋습니다.

+4

'PHP 경고 : fwrite()는 매개 변수 1이 resource이고, 문자열 'PHP 5.4에서 주어진 동안'$ 아웃 = fopen ('php : // stdout', 'w');'작품 – vladkras