我想运行类似的东西(在myProgram.sh中):
java -cp whatever.jar com.my.program $1
Run Code Online (Sandbox Code Playgroud)
在PHP中并读取输出.
到目前为止我有类似的东西:
$processOrderCommand = 'bash -c "exec nohup setsid /myProgram.sh ' . $arg1 . ' > /dev/null 2>&1 &"';
exec($processOrderCommand);
Run Code Online (Sandbox Code Playgroud)
但我真正喜欢的是能够在PHP脚本中获取java程序的输出而不只是将其作为另一个线程执行.
如何才能做到这一点?
你可以这样做 :
exec($processOrderCommand, $output);
Run Code Online (Sandbox Code Playgroud)
从文档:
如果
output参数存在,那么指定的数组将填充命令的每一行输出.尾随空格(例如\n)不包含在此数组中.请注意,如果数组已包含某些元素,则exec()将附加到数组的末尾.如果您不希望函数附加元素,请在将数组传递给exec()之前调用数组上的unset ().
为了更好地控制您的执行,您可以查看 proc_open()
资源:
关键是 shell_exec PHP 脚本中的类路径必须是绝对路径。
或者至少这是我让它正常工作的唯一方法。基本上,几乎不可能在不同的环境中区分 php 脚本运行 JVM 的相对目录是什么。
此外,它还有助于放置 java 的绝对路径位置,例如 usr/.../bin/java
| 归档时间: |
|
| 查看次数: |
4483 次 |
| 最近记录: |