2016-09-22 11 views
0

Phing에서 처음으로 PHP 서버를 실행 한 다음 PHP 단위 테스트를 실행하고 싶습니다.Phing에서 PHP 서버 실행

이것은 내가 지금까지 무엇을 가지고 :

<target name="test"> 
    <!-- Run the PHP server --> 
    <exec executable="php"> 
     <arg line="-S localhost:81 server.php"/> 
    </exec> 

    <!-- Run my tests --> 
    <exec executable="${phpunit.bin}" dir="${test.dir}" passthru="true" returnProperty="test.result"> 
     <arg line="IntegrationTests"/> 
    </exec> 

    <!-- Check if succeeded --> 
    <condition property="test.succeeded"> 
     <equals arg1="${test.result}" arg2="0"/> 
    </condition> 

    <fail unless="test.succeeded" message="Unit Tests Failed"/> 
</target> 

문제는 Phing는 PHP 서버를 생성 한 후 달려 있다는 것입니다.

문제는과 같이 스폰 속성을 추가하여 해결된다 :

과정이 결코 실제로 Phing이 종료 된 후에도 종료하는 것을 제외하고 예상대로이 작동

<exec executable="php" spawn="true">

. 즉, Phing이 작업을 완료 한 후에도 PHP 서버가 계속 실행되고 있습니다.

따라서 내 질문은 제대로 Phing 백그라운드에서 PHP 서버를 실행하는 것입니다?

답변

1

phing's ExecTask은 프로세스 ID를 알려주지 않으므로 kill $pid을 단순히 수행 할 수 없습니다.

killall php을 수행하면 php -S localhost에 대한 pgrep에 아마

:도 자체 phing 최선의 선택 (여전히 해킹)을 죽일 그 과정을 죽일 것이다 :

<exec command="pkill -f 'php -S localhost:81'"/> 

을하지만 당신은 할 필요가 모든 경우에 빌드가 실패하더라도 - succeeded 속성을 확인하기 전에 해당 라인을 추가하십시오.