2011-12-02 2 views
5

건강한 Java API가있는 Java 프로그램이 있지만 내 프로젝트의 요구 사항 인 Java 응용 프로그램과 PHP 스크립트 사이에 원시 인터페이스를 작성해야합니다.Java 응용 프로그램 및 PHP 실행

첫 번째 시도는 jar를 실행하기위한 패스 스루 기능을 실행하는 PHP 스크립트를 작성하는 것이 었습니다. jar 파일이 실행 및 실행했기 때문에 즉

passthru("java -jar myjarfile param1 param2 param3") 

는이 일을하지만, 매우 느린 것으로 판명 등

나의 다음 시도는 Tomcat7에 서블릿을 작성하고 날기에 의해 PHP와 인터페이스하는 것이었다

curl() 명령. 즉

curl(http://myserver/mywebapp/myservlet?p1=param1&p2=param2&p3=param3); 

이 우수한 성능을 가지고 있지만, 서블릿이 매우 불안정하고 (i가 10 초마다 약 1 요청과 함께 서버를로드하는)

내가 스택 오버플로 물어 와서 약 5 분 추락 : 내가이 일을 제대로하고 있니? 더 좋은 방법이 있습니까? Java 프로그램을 jvm에서 실행하고 PHP를 사용하여 상호 작용하는 방법은 무엇입니까?

감사

+0

만약 내가 당신이라면, 당신이 설명하는 두 번째 방법을 사용 하겠지만 서블릿의 안정성을 향상 시키십시오. 왜 충돌하는지 알아? 또한 JVM이 완전히 망가 졌는가 아니면 서블릿에서 예외인가? – Tom

+0

서블릿 예외였습니다. Jetty로 전환하여 문제를 해결했는데 안정적입니다. – Tucker

답변

3

처리 사물의 자바 방법과 일을 처리하는 PHP 방법의 차이의 세계가있다.

PHP는 기본적으로 모든 스크립트를 각 요청마다 처음부터 끝까지 실행합니다. 이는 매우 긴급한 프로그래밍 기술에 해당합니다. 반면 Java는 일반적으로 하나 이상의 요청에 대해 메모리에 남아있는 모듈별로 물건을 처리합니다. 두 가지를 통합하려면 "함수 호출"이상의 것을 고려해야하며,이 두 환경을 깨끗하게 메쉬 할 수있는 방법을 고려해야합니다.

PHP 요청 당 java를 시작하면 Java가 PHP처럼 동작하도록 요청합니다. 다른 말로하면, PHP를 PHP처럼 작동시켜 Java를 사용하는 가장 큰 이유의 대부분을 버릴 것입니다. 대신 Tomcat (또는 이와 비슷한) 인스턴스를 설정하고 요청을 다른 인스턴스로 전달하는 것을 고려하십시오. 다시 말해서, PHP가 Java 환경에 웹 요청을하면 Java 인터프리터를 완전히 빌드하고 해체하지 않고 (PHP가 일을 처리하는 방식이다) 처리한다.

1

JAR을 사용하려고했기 때문에 동일한 시스템에서 PHP와 Java를 사용할 수 있다고 가정합니다. 이 문서는 Java integration in PHP에 매우 흥미로울 것입니다. 나는 그것을 사용한 적이 없다는 것을 알아 두십시오, 나는 그것이 존재한다는 것을 알고 있습니다. 소개를 읽으십시오.

관련 문제