使用PHP执行MPI命令
我正在尝试使用php执行一个mpi程序,因为我必须为用户提供一个web界面。只有当我只有一个进程,即使用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
$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()
本身被禁用。检查是否已启用。