0

我在本地创建了一个在命令行中运行 java 应用程序的小型 php 脚本。这个 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 打印出应用程序运行时返回的每一行?希望我在这里有意义(如果我不是,请告诉我)。

4

2 回答 2

3

你可能想看看passthru函数和popen函数。这些应该在发生时返回输出(尽管 passthru 可能会缓冲输出)。

于 2012-01-02T05:03:27.197 回答
0

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

于 2012-01-02T05:03:05.263 回答