在运行时打印出shell_exec

时间:2012-01-02 04:50:33

标签: php shell-exec

我在本地创建了一个小的php脚本,它在命令行中运行java应用程序。这个java应用程序不断运行,永远不会完成。在运行时,它会输出命令行文本。这是代码:

<?php
    set_time_limit(0);
    $command = "java -Xms124M -Xmx124M -jar myapp.jar";
    $end = " 2>&1";
    $in = $command . $end;
    $out =  exec($in);
    var_dump($out);
?>

我的问题是输出永远不会打印,因为应用程序永远不会停止运行。有没有办法让php打印出应用程序运行时返回的每一行? 希望我在这里有意义(如果我不是,请告诉我)。

2 个答案:

答案 0 :(得分:3)

您可能需要查看passthru函数和popen函数。这些应该在输出时返回输出(尽管passthru可能会缓冲输出)。

答案 1 :(得分:0)

一种解决方案是将您的流程作为后台进程启动并将输出重定向到文件。然后你可以用PHP读取输出文件,但是你真的不应该像这样运行PHP,特别是因为你的java进程预计永远不会结束。一个更好的解决方案是使用AJAX轮询让PHP每隔几秒钟或几次返回输出文件的任何最新更新。