2016-09-22 14 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の

を殺し、そのプロセスをkillします:

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

しかし、あなたがしなければなりませんビルドが失敗した場合でも、その行を追加してsucceededプロパティをチェックしてください。

関連する問題