2012-05-29 4 views
1

php passthru() 함수를 사용할 때 기본값은 외부 스크립트 실행이 끝날 때까지 머무르는 것입니다.php passthru() 함수를 호출 한 후 실행 계속

PHP 매뉴얼 ::::: "프로그램이이 함수로 시작되면, 프로그램이 백그라운드에서 계속 실행 되려면 프로그램의 출력을 파일이나 다른 출력 스트림으로 리디렉션해야합니다. 이렇게하면 PHP 실행이 끝날 때까지 PHP가 멈추게됩니다. " - http://php.net/manual/en/function.passthru.php

특정 시간 동안 외부 스크립트 데이터를 수집하려고합니다. 예 : 30 초 동안, 그리고 그 후에 PHP 스크립트 실행을 계속합니다. 어떤 아이디어로 그렇게 할 수 있습니까?

내 현재 코드는 다음과 같습니다 위의 코드에서

ob_start(); 
    passthru("/home/somefolder/somefolder2/program $pic1 $pic2"); 
    $details = ob_get_contents(); 
    ob_end_clean(); 

문제 - 때때로 "프로그램"스크립트가 잠시 동안 실행 유지하지만 내가 걸어 온 더 30를 사용자 수 있도록 싶지 않아 초.

출력을 파일로 리디렉션하고 30 초 후 (매뉴얼에 따라) 읽으려고 생각했습니다. 하지만 출력을 파일로 리디렉션하는 방법을 모르겠습니다.

답변

1
"/home/somefolder/somefolder2/program $pic1 $pic2 > /path/to/your/file 2>&1" 

그리고 백그라운드에서 실행하려면 끝에 &을 추가하십시오.

"/home/somefolder/somefolder2/program $pic1 $pic2 > /path/to/your/file 2>&1 &" 
+0

이것은 프로그램 실행이 끝날 때까지 중단없이 PHP 스크립트의 실행을 계속합니까? – sanandrl

+0

백그라운드에서 실행할 수있게되면 PHP 스크립트 실행이 중단되지 않습니다. – xdazz

+0

"2> & 1"부분의 목적을 설명 할 수 있습니까? – sanandrl