2012-02-23 3 views
0

% 완료율을 출력하는 장기 실행 펄 스크립트가 있습니다. PHP 페이지에서 완료 상태를 실시간으로 어떻게 표시합니까?PHP에서 perl 스크립트를 모니터하는 방법

예 :

펄 :

my $i = 0; 
for $i (1 .. 6) { 
    print "$i\n"; 
    sleep 1; 
} 
print "script end\n"; 
exit; 

PHP :

echo passthru('perl testprint.pl'); 

이 출력을 표시하기 위해 노력하고 있지만 실시간.

+1

어떻게 출력됩니까? 각 줄에 새로운 비율이 있습니까? 이전의 백분율을 백스 페이스하는 것은 결코 파싱되지 않을 것이라는 아이디어를 가지고 있습니까? – jordanm

+0

펄 스크립트는 현재 각 행에 새로운 백분율을 출력합니다. 그러나 필요한 경우 다시 작성할 수 있습니다. – Isius

+0

은 perl을 php로 변환합니다. 이제까지 사람은 PHP가 더 낫다는 것을 안다 :-) –

답변

1

출력을 플랫 파일로 파이프하도록 perl 스크립트를 수정하십시오. 이 파일을 구문 분석하고 원하는 형식으로 출력하려면 PHP 스크립트를 사용하십시오.

ajax를 사용하여 html 페이지에서 PHP 스크립트를 호출하거나 서버의 CGI 디렉토리에 perl 스크립트를 저장하면 추가 PHP 파일을 필요로하지 않고 직접 호출 할 수 있습니다.

마지막으로 멋진 진행률 막대를 만들고 이익을 얻으십시오.

+0

당신이 올바른 방향으로 나를 가리키고 있다고 생각합니다. 하지만 proc_open은 여기에서 더 잘 사용할 수 있습니까? – Isius

+0

나는이 기능에 익숙하지 않지만 공개적으로 액세스 할 수있는 사이트 나 공유 호스팅 서버에서 실행하면 위험 할 수 있습니다. 어쩌면 그 제안으로 당신의 질문을 업데이트 할 수 있고, 좀 더 지식이있는 다른 사람이 차임 할 수 있습니까? –

0

당신은 AJAX를 사용해야합니다.

나는 상태를보고, AJAX가 볼 수있는 상태를 업데이트하는 PHP 스크립트를 가지고있다.

+0

그래도 스크립트를 다시 실행하지 않고 상태를 모니터링하려면 어떻게해야합니까? – Isius

+0

그런 경우에는 브라우저에 소켓을 만들고 추가 업데이트를 위해 연결을 유지하는 Perl 스크립트가 필요합니다. PHP는 서버 자원을 소모하지 않고이를 수행 할 능력이 없습니다. –

관련 문제