2011-02-23 2 views
1

프롤로그 코드 data.pl이 있는데 PHP 파일에서 사용해야합니다. 인터넷에 내 검색에서, 나는 발견이 :PHP 파일로 프롤로그 파일 연결

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

내가 Shell-exec()system() 명령과 함께이 시도했지만, 그들 중 하나가 작동하지 않습니다. 또한 디렉터리 경로를 수정하려고 시도하고 data.plpath/to/prolog 폴더로 이동했지만 여전히 결과가 없습니다. 아무도이 문제에 대해 저를 도울 수 있습니까?

+0

SWI-Prolog를 사용하고 있다면 (아마도 그렇지 않은 경우에도) http://www.j-paine.org /dobbs/prolog_from_php.html 도움이 될 수 있습니다. – sharky

+0

@ sharky; 이것은 내가 코드를 가져간 페이지이며 여기에서 모든 코드를 시도했습니다. 감사합니다 ... – akasya

답변

0

웹 응용 프로그램과 Prolog 응용 프로그램을 통합하는 더 좋은 방법은 SWI의 기본 제공 HTTP 서버를 사용하는 것입니다. Prolog를로드하고 모든 호출마다 입력 파일을 구문 분석 할 필요가 없습니다. 또한 AJAX 및 유사한 접근법을 사용할 수 있기 때문에 더 많은 웹 통합을 제공합니다.

PHP 런타임 env.에서 Prolog 실행 파일 자체를 호출하도록 주장하는 경우 몇 가지 세부 정보를 제공해야합니다. PHP 로그에서 어떤 오류가 발생합니까? 파일 권한을 확인 했습니까? Prolog 실행 파일과 데이터 파일 모두에 전체 경로를 제공하려고 시도 했습니까? "작동하지 않는다"고 말하는 것은 진술이 아니라 질문입니다.

마지막으로 효율성 문제 때문에 각 요청에 따라 Prolog 데이터 파일을 다시 구문 분석하는 대신 빠른로드 형식 (QLF)으로 컴파일하는 것이 좋습니다.

+0

내가 무엇을해야하는지 설명하게하십시오 : 나는 몇몇 술어를 테스트하고 (나에게 해결책을주기 위해) 몇 가지 일을하는 데 도움이되는 하나의 프롤로그 파일을 사용할 수있는 PHP 페이지를 만들어야합니다. 내가 어떤 솔루션을받지 못한다는 것을 알기까지 테스트 한 코드로 말하면, IE가 페이지를 열지 않는 php 파일을 실행할 때 (모든 시간이 순환 함). 어떤 오류 메시지도받지 못하기 때문에 문제를 정의 할 수 없습니다. 내가 시도해 볼 수있는 모든 종류의 솔루션을 열어두고 있습니다 ... – akasya

+0

@akasya, 일부 로그 또는 추적을 보지 않고 PHP 환경에 어떤 문제가 있는지 알 수 없습니다. 문제를 해결하기 위해 인쇄 메시지를 추가하십시오. 또한 명령 프롬프트에서 PHP에 포함 된 명령 줄을 실행하여 제대로 작동하는지 확인하십시오. –

0

'start'명령을 사용하면 강제로 프로그램이 새 세션에서 실행되고 IO 파이프가 유출되지 않습니다. 제 도스의 경험은 약간 녹슬었지만 유닉스 컴퓨터에서 쉘 메타 카로 해석 될 많은 것들이 있습니다. 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

귀하의 관심에 고마워,이 방법을 시도했지만 작동하지 않습니다. 이 코드를 작성한 .php 파일을 실행하면 인터넷 익스플로러가 페이지를 열지 않습니다 (IE의 원이 항상 회전합니다). 오류 메시지 또는 다른 것이 있습니다. 그래서 나는 문제가 어디 있는지 알지 못합니다. 내가 뭘 다른 것을 시도 할 수 있을까? – akasya