package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class TestMain {
/**
* @param args
*/
public static void main(String[] args) {
TestMain test = new TestMain();
String r = test.execPHP("E:/dev/project/workspace/JavaCallphp/test.php", "id=123");
System.out.println(r);
}
public String execPHP(String scriptName, String param) {
StringBuilder output = new StringBuilder();
BufferedReader input = null;
String phpPath = "E:/wnmp/php/php.exe";
try {
String line;
Process p = Runtime.getRuntime().exec(phpPath + " " +scriptName + " " + param);
input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
output.append(line+"\n");
p.destroy();
}
if(line == null){
p.destroy();
}
} catch (Exception err) {
err.printStackTrace();
}finally{
if(input != null){
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return output.toString();
}
}
以上是在windows环境下,linux环境下不需要while循环中p.destroy();这句多余代码,不知道问什么windows里需要,不加上的话,会造成线程一直占用,不释放。