2010-08-24 1 views
3

을 손질하고)PHP는 간부 출력 내가 PHP에서 간부를 사용하여 다시 또 다른 문제가


내 OS는 수세 리눅스는 내가 내가 (간부 사용할 때 어떻게 든 내 출력이 정돈되고

PHP 5.1.2을 사용하고 있습니다 리눅스

~ -> ps -ef | grep java 
root  3548  1 0 Aug05 ?  00:00:01 /usr/java/jdk1.5.0_13//bin/java -server -Djava.awt.headless=true -Xms512m -Xmx512m -XX:NewSize=224m -XX:MaxNewSize=256m -XX:SurvivorRatio=8 -XX:+UseParallelGC -jar /jfe-server.jar start 
psinl 14811  1 0 09:12 ?  00:00:01 /usr/java/jdk1.5.0_13//bin/java -server -Djava.awt.headless=true -Xms512m -Xmx512m -XX:NewSize=224m -XX:MaxNewSize=256m -XX:SurvivorRatio=8 -XX:+UseParallelGC -jar jfe-server.jar start 
psinl 18164 18080 0 16:20 pts/1 00:00:00 grep java 

하지만 때

<div>Checking whether JFEServer has been started</div> 
<div><pre><?php exec('ps -ef | grep java',$output,$result); 
print_r($output); ?></pre> 
</div> 
</br> 
을 통해 웹에 출력

그리고 웹

Checking whether JFEServer has been started 

Array 
(
    [0] => root  3548  1 0 Aug05 ?  00:00:01 /usr/java/jdk1.5.0_13//bin/java 
    [1] => psinl 14811  1 0 09:13 ?  00:00:01 /usr/java/jdk1.5.0_13//bin/java 
    [2] => psinl 18069 14271 0 16:20 ?  00:00:00 sh -c ps -ef | grep java 
    [3] => psinl 18071 18069 0 16:20 ?  00:00:00 grep java 
) 

내 출력은 왜 PHP는 자동으로 내 출력 심지어 내가 그것을 원하는 didnt가를 손질했다입니까?

답변

1

명령 출력을 클라이언트 브라우저에 직접 전달하는 패스 스루를 사용할 수 있습니다. 그 도움이되지 않는 경우는 표준 출력 단자 타입 (예를 들어, 파일/파이프/터미널)을 테스트하는 경우

<div>Checking whether JFEServer has been started</div> 
<div><pre><?php passthru('ps -ef | grep java', $result); ?></pre></div> 
<br /> 

, 당신은 ps의 문서로 보일 것입니다. 그렇게하면 실제 터미널 너비를 결정할 수없는 경우 일부 기본 너비로 트리밍 될 수 있습니다. 내 데비안 기반 서버에서 그렇습니다. 내 컴퓨터에서 올바른 명령은 다음과 같습니다.

<div>Checking whether JFEServer has been started</div> 
<div><pre><?php passthru('ps -efww | grep java', $result); ?></pre></div> 
<br /> 
-1

PHP 출력이 잘리지 않습니다. 브라우저에서 페이지 원본보기를 마우스 오른쪽 단추로 클릭하여 원본 출력을 확인하십시오.

+0

아니오, 그렇지 않습니다. 테스트를 마쳤습니다. – rlcabral

1

이것은 PHP가 exec와 함께 사용할 수있는 충분한 버퍼를 할당 할 수 없기 때문입니다. exec('ps -ef | grep java > /tmp/mytmpfilename.txt')

...의 호출로 화면에 그 덤프 file_get_contents()

에 :

예를 들어 당신의 exec() 전화에 임시 파일에 파이프 출력을 : 가장 좋은 사이에서 단계를 추가하는 것입니다

예 : var_dump(file_get_contents('/tmp/mytmpfilename.txt')); 편집 : 수천 줄의 값과 같이 많은 양의 데이터가 출력되는 경우 file()을 사용할 수도 있습니다.

1

-w 플래그를 추가하여 CentOS 6.2에서 ps 출력을 두 배로 늘려야했습니다. 물론 이것은 때때로 스크립트에서 실행되는 세션에서만 필요합니다. 청각 장애 세션에서

는, PS 출력을 손질하지 않지만 다른 상황에서합니다 ( TERM 변수에 따라, 그것은. 당신은 명시 적으로 -ww을 추가하여 무제한으로 설정할 수 있습니다.

ps 매뉴얼 페이지이었다 이것에 대한 저의 열쇠