2012-04-04 3 views

답변

2

exec() 호출은 외부 작업이 완료 될 때까지 차단됩니다. myscript 호출 중 하나를 백그라운드에서 실행하도록 강요하지 않으면 myscript.php가 실행되는 동안 finish.php가 실행되지 않습니다.

0
$output = shell_exec("myscript.php"); 

이것은 단지 추측이지만 실행 오류가 표시됩니다. 이것은 myscript.php가 필요한 뱅 라인 (#!/usr/bin/php)과 + x 플래그를 가지고 있지 않기 때문일 수 있습니다. 그냥

include("myscript.php"); 
include("finish.php"); 

이것은 당신이 찾고있는 결과를해야합니다 수있는 것처럼

는 * UPDATE *

는 또한, 그것은 보인다. 실행중인 프로세스 외부에서 실제로이 스크립트를 실행하려면 위의 bang 행에 대한 주석을보고 스크립트를 실행 가능하게 만드십시오.

0

myscript.php의 실행이 중지 된시기를 알려주는 방법이 있습니까?

finish.php을 실행하면 myscript.php 실행이 완료됩니다. 그것이 백그라운드 프로세스 인 경우 예를 들어 myscript.php이 완료되면 파일을 만드는 것과 같은 '해킹'을 수행하고이를 확인하십시오. the docs에서

:

프로그램이 백그라운드에서 실행을 계속하기 위해서는,이 기능으로 시작되는 경우는, 프로그램의 출력이 파일이나 다른 출력 스트림으로 리디렉션해야합니다. 그렇게하지 않으면 프로그램 실행이 끝날 때까지 PHP가 멈추게됩니다.

0

더 많은 유연성을 제공하므로 proc_open을 사용하는 것이 좋습니다. 또한 exec()의 경우 두 번째 매개 변수는 첫 번째 매개 변수가 종료 된 후에 만 ​​호출된다는 점에 유의해야합니다.

관련 문제