0

我的蚂蚁脚本

<target name="testRunPHP">
    <exec executable="${php}" failonerror="true" dir="${source}">
            <arg line="${local.deploydir}/application/controllers/sleepTest.php"/>
            <arg line="-output" />
    </exec>
</target>

我的 sleepTest.php

header( 'Content-type: text/html; charset=utf-8' );
header("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
set_time_limit(0);
apache_setenv('no-gzip', 1);
ini_set('zlib.output_compression', 0);
ini_set('implicit_flush', 1);
for ($i = 0; $i < 10; $i++) { 
    $randSlp=rand(1,3);
    echo "Sleeping for ".$randSlp." second. ";;
    sleep($randSlp);
    if(ob_get_level()>0)
       ob_end_flush(); 
}
ob_implicit_flush(1);

如果在浏览器中运行文件而不是在执行文件时显示输出,
但在执行完成后在 ant 脚本中显示输出(在控制台中)。
我想在文件处理过程中在控制台中显示回显...

4

1 回答 1

3

Exec 将每一行输出到标准输出。您的 php 脚本中的问题是您将其输出到一行。您需要做的就是在echo "Sleeping for ".$randSlp." second. \n";. 我已经用这些脚本对此进行了测试:

构建.xml

<project name="exectest" default="test">

    <dirname property="build.dir" file="${ant.file}" />

    <target name="test">

            <exec executable="cmd">
                <arg value="/c" />
                <arg value="C:\wamp\bin\php\php5.3.13\php.exe" />
                <arg value="${build.dir}\test.php" />
            </exec>

    </target>

</project>

测试.php

<?php

header( 'Content-type: text/html; charset=utf-8' );
header("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
set_time_limit(0);
apache_setenv('no-gzip', 1);
ini_set('zlib.output_compression', 0);
ini_set('implicit_flush', 1);
for ($i = 0; $i < 10; $i++) { 
    $randSlp=rand(1,3);
    echo "Sleeping for ".$randSlp." second. \n";
    sleep($randSlp);
    if(ob_get_level()>0)
       ob_end_flush(); 
}
ob_implicit_flush(1);

?>
于 2013-04-24T10:23:13.117 回答