Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过传递大文本从php调用JavaJAR的最佳/最快方法是什么?_Java_Php_Linux_Apache - Fatal编程技术网

通过传递大文本从php调用JavaJAR的最佳/最快方法是什么?

通过传递大文本从php调用JavaJAR的最佳/最快方法是什么?,java,php,linux,apache,Java,Php,Linux,Apache,这是一个场景:我有一个php脚本,它构建html并将其回送到浏览器。在回显html之前,我需要调用可执行的JavaJAR文件并将html传递给它,以便它能够处理它并将其返回给php进行回显 我现在能想到的唯一方法是将html保存到临时文件中,将文件名传递给java,让它修改它,然后在php中再次加载它。我猜这可能相当慢,需要将文件写入磁盘,然后读取、修改、再次写入和再次读取 我的问题是:在给定的场景中,有没有一种更快的方法将html文件传递给java并返回给php 我当前的堆栈:Apache2.

这是一个场景:我有一个php脚本,它构建html并将其回送到浏览器。在回显html之前,我需要调用可执行的JavaJAR文件并将html传递给它,以便它能够处理它并将其返回给php进行回显

我现在能想到的唯一方法是将html保存到临时文件中,将文件名传递给java,让它修改它,然后在php中再次加载它。我猜这可能相当慢,需要将文件写入磁盘,然后读取、修改、再次写入和再次读取

我的问题是:在给定的场景中,有没有一种更快的方法将html文件传递给java并返回给php


我当前的堆栈:Apache2.4、PHP5.4.7、Java 7、OS:Ubuntu

我使用了Marc B建议的解决方案,由于在线上没有明确的例子,我正在粘贴我的PHP和Java代码,以防将来有人需要它:

PHP代码:

<?php

$process_cmd = "java -jar test.jar";

$env = NULL;
$options = ['bypass_shell' => true];
$cwd = NULL;
$descriptorspec = [
    0 => ["pipe", "r"], // stdin is a pipe that the child will read from
    1 => ["pipe", "w"], // stdout is a pipe that the child will write to
    2 => ["pipe", "w"]  // stderr is a file to write to
];

$process = proc_open($process_cmd, $descriptorspec, $pipes, $cwd, $env, $options);

if (is_resource($process)) {

    //feeding text to java
    fwrite($pipes[0], "Test text");
    fclose($pipes[0]);

    //echoing returned text from java
    echo stream_get_contents($pipes[1]);
    fclose($pipes[1]);

    //It is important that you close any pipes before calling
    //proc_close in order to avoid a deadlock
    $return_value = proc_close($process);

    echo "\n command returned $return_value\n";
}

?>

proc\u open
?PHP用它启动java小程序,然后通过proc handle的stdout将html传递给应用程序,在java中显示为stdin。谢谢,这看起来很有希望,我只需要找到一个合适的例子,看看它是如何工作的。
package Test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String input;

        while ((input = br.readLine()) != null) {
            System.out.println(input + " java test string ");
        }

    }

}