Подключение файла Prolog к файлу PHP - PullRequest
1 голос
/ 23 февраля 2011

У меня есть код Пролога data.pl, и мне нужно использовать его из файла PHP.Из моего поиска в интернете я нашел это:

exec('start <path/to/prolog> -f data.pl -g elem(a,[a,b])', $output)

Я пробовал это с командами Shell-exec() и system(), но они также не работают.Я также попытался исправить пути к каталогам и переместить data.pl в path/to/prolog папку, но все равно ничего не получилось.Кто-нибудь может мне помочь в этом вопросе?

Ответы [ 2 ]

0 голосов
/ 23 февраля 2011

Использование команды 'start' заставит программу работать в новом сеансе, и каналы ввода-вывода не будут инерционированы. Мой опыт работы с DOS немного устарел, но в этом утверждении есть много вещей, которые будут интерпретироваться как метачары оболочки на Unix-машине. Предполагая, что интерпретатор Prolog использует STDIO, команда должна быть:

  $cmd='C:\\Program Files\\pl\\bin\\plwin -f data.pl -g elem(a,[a,b])';
  // $cmd=escapeshellcmd($cmd); // in case you're still having problems
  exec($cmd, $output);
0 голосов
/ 23 февраля 2011

Лучшим подходом к интеграции веб-приложения с приложением Prolog может быть использование встроенного HTTP-сервера SWI.Это избавит вас от необходимости загружать Prolog и анализировать входной файл при каждом вызове.Он также обеспечивает более широкую интеграцию с веб-интерфейсом, поскольку вы можете использовать AJAX и аналогичные подходы.

Если вы настаиваете на вызове самого исполняемого файла Prolog из среды выполнения PHP, вам придется предоставить некоторые дополнительные сведения.,Какие ошибки вы получаете в ваших логах PHP?Вы проверили права доступа к файлам?Вы пытались указать полный путь к исполняемому файлу Prolog и файлу данных?Просто сказать «это не работает» - это утверждение, а не вопрос.

Наконец, из соображений эффективности рекомендуется скомпилировать файл данных Prolog в быстрый формат загрузки (QLF) вместо повторногопарсинг с каждым запросом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...