我正在尝试使用php执行mpi程序,因为我必须为user.PHP成功执行命令并仅返回输出如果我只有一个进程,即
$output = system(" mpiexec -hostfile /data/hosts -np 1 /data/./hello",$returnValue);
但我需要一个以上的过程,我尝试了以下方法,但结果相同,即mpi程序没有响应。
使用system()
$output = system(" mpiexec -hostfile /data/hosts -np 2 /data/./hello",$returnValue);
使用shell_exec()
$output = shell_exec(" mpiexec -hostfile /data/hosts -np 2 /data/./hello");
如果我使用这些方法来运行一个简单的c程序,我会收到响应。
$output = system("/data./hello",$returnValue);
请帮助我。非常感谢。
答案 0 :(得分:3)
问题似乎是你试图存储" system()"的输出。进入" $输出"虽然它已经将值存储在" $ returnValue"上。试试这个:
exec('mpiexec -hostfile /data/hosts -np 2 /data/./hello', $var);
var_dump($var);
由于某些奇怪的原因,PHP与多线程相处并不相同。
脏的workarround将结果输出到文件并从该文件中提供php,如:
system(" mpiexec -hostfile /data/hosts -np 2 /data/./hello > myfile.txt 2>&1");
$handle = file_get_contents('myfile.txt');