Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.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执行MPI命令_Php_Mpich - Fatal编程技术网

使用PHP执行MPI命令

使用PHP执行MPI命令,php,mpich,Php,Mpich,我正在尝试使用php执行一个mpi程序,因为我必须为用户提供一个web界面。只有当我只有一个进程,即 $output = system(" mpiexec -hostfile /data/hosts -np 1 /data/./hello",$returnValue); 但我需要不止一个过程,我尝试了以下方法,但结果是相同的,即mpi程序没有响应 使用系统() $output = system(" mpiexec -hostfile /data/hosts -np 2 /data/./hel

我正在尝试使用php执行一个mpi程序,因为我必须为用户提供一个web界面。只有当我只有一个进程,即

$output = system(" mpiexec -hostfile /data/hosts -np 1 /data/./hello",$returnValue);
但我需要不止一个过程,我尝试了以下方法,但结果是相同的,即mpi程序没有响应

使用系统()

$output = system(" mpiexec -hostfile /data/hosts -np 2 /data/./hello",$returnValue);
$output = shell_exec(" mpiexec -hostfile /data/hosts -np 2 /data/./hello");
使用shell\u exec()

$output = system(" mpiexec -hostfile /data/hosts -np 2 /data/./hello",$returnValue);
$output = shell_exec(" mpiexec -hostfile /data/hosts -np 2 /data/./hello");
如果我使用这些方法来运行一个简单的c程序,我确实会收到响应

$output = system("/data./hello",$returnValue);

请帮助我。非常感谢。

问题似乎是您试图将“system()”的输出存储到“$output”中,而它已经在“$returnValue”中存储了值。试试这个:

exec('mpiexec -hostfile /data/hosts -np 2 /data/./hello', $var);
var_dump($var);
出于某种奇怪的原因,PHP无法与多线程相处

一个棘手的问题是将结果输出到一个文件,并从该文件向php提供数据,类似于:

system(" mpiexec -hostfile /data/hosts -np 2 /data/./hello > myfile.txt 2>&1");
$handle = file_get_contents('myfile.txt');

感谢您的回答,您提供的上述命令不会写入任何文件,即使我使用单线程。第一次尝试只是重定向
stdout
,我编辑了答案并添加了
stderr
的重定向:)我完全按照你告诉我的那样做,但它不工作。
myfile.txt
是空的吗?你是在Windows还是Linux上运行这个?该命令应将所有输出重定向到myfile.txt,除非输出是由second进程创建的。。。您可以尝试在终端上执行
mpiexec-hostfile/data/hosts-np2/data//hello>myfile.txt 2>&1
,查看它是否输出任何内容……根据,您需要禁用安全模式,以便在安全模式执行目录之外运行任何可执行文件。可能
mpiexec
在安全模式\u exec\u dir之外?这同样适用于
system()
。但是,当安全模式打开时,
shell\u exec()
本身被禁用。检查是否已启用。