我在本地创建了一个小型php脚本,它在命令行中运行java应用程序。这个Java应用程序连续运行,永远不会结束。运行时,它输出命令行文本。这里是代码:运行时打印出shell_exec
<?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打印出应用程序正在运行时返回的每一行? 希望我在这里有意义(让我知道如果我不是)。
为什么你会产生一个预计不会结束的进程?基于服务或客户端 - 服务器架构不会更好吗? – Kenaniah 2012-01-02 05:00:13
'java'标记不相关。用任何语言编写的长时间运行的程序都会遇到同样的问题。 – 2012-01-02 05:03:24
好吧,如果进程永远不会结束,那么您需要在不同的线程中打开它,但afaik php没有内置多线程功能。由于为每个请求打开一个JVM本身就是过度杀毒,所以我建议你使用某种形式的进程间通信(IPC),通过执行如下操作来启动程序的新实例:http://stackoverflow.com/questions/661546 /发送邮件从php到Java。增量更新站点应该通过JavaScript和其他请求来完成,而不是等待一个请求。编辑:好吧,我没有读“本地”的一部分,傻我 – PeterT 2012-01-02 05:03:38