Я пытаюсь выполнить программу MPI с использованием php, поскольку я должен предоставить пользователю веб-интерфейс .PHP успешно выполняет команду и возвращает только вывод Если у меня только один процесс, т.е.
$output = system(" mpiexec -hostfile /data/hosts -np 1 /data/./hello",$returnValue);
Но мне нужно больше, чем один процесс, и я попробовал следующие способы, но результаты такие же, т.е. нет ответа от программы MPI.
используя систему ()
$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);
Пожалуйста, помогите мне. Большое спасибо.
Кажется, проблема в том, что вы пытаетесь сохранить выходные данные «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');
Других решений пока нет …