Я имею MATLAB r2013b, IIS 7.5, php 5.6 на Windows Server 2008 и пытаюсь сделать следующее:
<?php
...
chdir($matlabScriptsDir);
exec("matlab -r test_func(args) -logfile $logfile", $output);
$ output показывает, что процесс завершился с кодом 0, в TaskManager я вижу MATLAB.exe, запущенный от пользователя IUSR, $ logfile создается и блокируется этим процессом, но процесс ничего не делает — просто зависает (нет проблем с запуском та же команда из cmd.exe).
В чем проблема?
с использованием -r
Опция аналогична вводу команд в командную строку Matlab, поэтому после выполнения команды Matlab все еще работает, ожидая следующей команды. Попробуйте вместо этого:
matlab -r "test_func(args), exit"
Так что процесс Matlab закончится. Я предлагаю вам сделать еще больше, и обернуть его try-catch
(с последующим exit
) чтобы в случае ошибки процесс не зависал.
Других решений пока нет …