запуск кода matlab из php

Как видно из названия, у меня есть код Matlab для распознавания изолированных слов, и я хочу иметь возможность интегрировать этот проект с другим, созданным с PHP для какой-либо цели. Я раньше не сталкивался с такой проблемой, другими словами, это первый раз для меня, когда мне нужно интегрировать PHP и Matlab, поэтому я действительно не знаю, с чего начать и как. Я прочитал несколько статей, но я не мог сделать это действительным.

У меня есть PHP 5.4.9 , Matlab r2012a и Windows 7 OS . файлы проекта matlab можно увидеть на github

Любая помощь будет принята с благодарностью.

Related of "запуск кода matlab из php"

Здесь у вас есть несколько вариантов:

  • установлен ли MATLAB на сервере, где будет развернуто приложение PHP (а не текущая среда разработки)? Если это так, вы можете вызвать его прямо так же, как любая другая программа ( maltab -r "..." ), используя все, что эквивалентно команде EXECUTE в PHP. Вот некоторые ресурсы (обязательно проверьте также связанные вопросы):

    • Как вызвать MATLAB из командной строки и распечатать на stdout перед выходом
    • Запуск cmd-файла без появления графического пользовательского интерфейса
    • Параметры прохождения _ Скрипт оболочки – октавный скрипт

    Другие прокомментировали, как передать ввод / вывод между PHP и вашим скриптом MATLAB. Например, вы можете создать свою функцию MATLAB, чтобы получить путь к файлу WAV в качестве входных данных, обработать его и сохранить результирующее изображение на диск:

     function myFunc(filename) [y,Fs] = audioread(filename); img = my_process_func(y,FS); imwrite(img, 'out.png'); end 

    Что вызывается из PHP как:

     % of course you have to make sure "myFunc" is available on the MATLAB path. % think: "addpath(..)" or just "cd(..)" into the directory first matlab -wait -nodisplay -r "myFunc('audio.wav'); quit;" 

    вы могли бы затем прочитать выходное изображение в приложении PHP.

  • Если нет, какие панели инструментов, связанные с развертыванием, у вас есть? Компилятор MATLAB и связанные с ним панели инструментов, такие как MATLAB Builder NE и MATLAB Builder JA .

    Они будут компилировать вашу программу в исполняемый файл / сборка / JAR-файл соответственно, и все они требуют наличия свободно доступного времени выполнения MCR . Другими словами, для исполняемых файлов не требуется полная установка MATLAB на целевой машине, а только время выполнения MCR.

    Вы выполнили бы исполняемый файл таким же образом, как и раньше.

    Другим продуктом является MATLAB Coder , который преобразует ваш код MATLAB в программу на C ++. При компиляции он может работать без каких-либо внешних требований.

    Новым продуктом Mathworks является MATLAB Production Server . Лично я ничего об этом не знаю 🙂

  • Еще один вариант – использовать TCP / IP для связи между PHP и MATLAB. Сервер будет запускаться на стороне MATLAB, используя программирование сокетов, написанное как C MEX-файл или Java-класс. Видеть:

    • Библиотека Matlab Mex Socket Wrapper
    • Написание Java-кода в Matlab?

    Клиент является вашим PHP-приложением. Идея состоит в том, чтобы MATLAB прослушивал соединения, считывая любой вход, предоставляемый клиентом, eval его и возвращающий результат. Это больше связано с другими параметрами, поскольку вам приходится иметь дело с сериализацией и другими вещами, такими как параллелизм. Преимущество состоит в том, что MATLAB можно запускать на отдельном сервере, даже на нескольких серверах в облаке (см. Этот пост ).

Итак, во-первых, решите, какой подход лучше всего подходит для вашего проекта, тогда было бы легче ответить на конкретные вопросы. Просто всегда консультируйтесь с документами, панели инструментов MATLAB очень хорошо документированы и обычно включают в себя множество примеров. Вот еще несколько ресурсов, характерных для семейства продуктов MATLAB Compiler:

  • Вебинар: развертывание приложений с помощью MATLAB
  • PDF-файл: развертывание приложений MATLAB – руководство по веб-примеру

Обратите внимание, что они концентрируются на приложениях ASP.NET и Java JSP / сервлетов. В вашем случае приложение PHP будет взаимодействовать со средним уровнем, на котором запущен веб-сервис, построенный с использованием одного из двух вышеуказанных параметров (или просто создайте CGI-подобный сайт, на котором выполняются простые исполняемые файлы, созданные с использованием MATLAB-компилятора, как объяснялось ранее)

НТН

Чтобы помочь OP с запущенными командами системы с веб-страницы php, мой пост здесь имеет значение (скопировано ниже).

Мы делаем именно это все время. Я называю их страницами вуду. Вот какой рабочий код:

 <?php $command="uptime"; $output; $retval; $errors=""; exec ( $command , &$output, &$retval ); echo $output[0]."\n"; unset($output); ?> с <?php $command="uptime"; $output; $retval; $errors=""; exec ( $command , &$output, &$retval ); echo $output[0]."\n"; unset($output); ?> 

И выход на веб-страницу служил:

 13:40:19 up 22 days, 23:14, 0 users, load average: 0.04, 0.02, 0.00 

И дополнительное примечание, которое я добавил в комментариях ниже: Относительные абсолютные пути могут быть болью … $command может потребоваться /usr/bin/uptime иначе может быть /usr/bin/ls /home/chris/ftp , Обычно рабочий каталог скриптов находится там, где они живут в файловой системе. MATLAB – это программа для окон, да? Мой опыт в том, что вам понадобятся абсолютные пути для программы и любые файлы, переданные в качестве аргументов, например: $command="c:\\matlab\\matlab.exe c:\\www\\somefile.wav" И тогда нужны одинарные кавычки для глупых имен NTFS, завершение командной строки TAB хорошо подходит для примеров. Или используйте правильное имя 8.3 с ~ в нем.

Одним быстрым взломом было бы скомпилировать ваш код Matlab в исполняемый файл, а затем использовать shell_exec() PHP.

Трудная часть будет адаптировать ваш код Matlab (извините, я его не читал) таким образом, чтобы:

  1. Он получит свой вход в стиле командной строки (как строки char );
  2. Он будет выводить свои результаты в виде текста в стандартный вывод (файл id # 1 в Matlab).

Тогда все, что требуется, – это разобрать вывод Matlab обратно в PHP …

мой ответ будет состоять из двух частей:

1- как запустить скрипт matlab из терминала? – Я приведу пример о запуске скрипта matlab из терминала

 matlab -nojvm -nodesktop -r "run <the-script>.m" matlab -nojvm -nodesktop -r "<the-script>" matlab -nojvm -nodesktop -r "run <the/path>/<the-script>.m" 

matlab в окнах, должно быть в вашем окружении. как ?

если вам нужно скомпилировать ваш скрипт в java:

 java -jar yourjarfile.jar 

2- как выполнить команду терминала из php? Я думаю, что ответы выше, хорошие, не нужно их повторять.

больше примечаний:

  1. следите за своей безопасностью, вы можете легко xss
  2. отрисуйте свой код и улучшите его, чтобы сохранить параметры и вывод в базу данных, запустить код в параллелях или диспетчере очередей, вы можете создать службу REST.
  3. модульный тест .
  4. используйте linux, его гораздо более мощный.