2011-02-25 4 views
2

PHP가 설치된 아파치 2 웹 서버가있다. 내가 끊임없이 실행되는 Java 프로그램에 액세스하는 PHP 스크립트를 얻을 수있는 방법이 있는지 궁금하다. 프로세스가 추적하는 정보를 얻는 것이 대부분이다. Java 프로그램은 webapp가 아니거나 Apache 서버에서 실행 중입니다. 별도의 프로그램입니다.PHP는 실행중인 Java 프로세스와 데이터를 교환하거나 상호 작용합니다. (나는 PHP/Java 브릿지와 다르게 생각한다)

필자는 PHP/Java Bridge 시스템을 살펴 보았습니다. 필자가 필요로하는 것은 아니지만 PHP와 Java에서 Java 프로그램을 실행할 수 있도록 해준 것입니다. localhost에서 실행되는 웹 서비스와 SOAP를 통해이 작업을 수행하는 방법을 생각해 볼 수 있습니다. 그러나이를 피할 수있는 방법이 있고 Java 프로그램에 직접 액세스 할 수 있으면 웹 응용 프로그램을 훨씬 빠르게 실행할 수 있습니다.

"대화"하려고하는 Java 응용 프로그램은 내가 작성한 프로그램이므로 Java 프로그램 내의 내용을 설정해야하는 경우 필요한 변경 작업을 수행하기 위해 소스 코드에 액세스 할 수 있습니다.

미리 감사드립니다. 나는 이런 식으로 모든 것을 조사해 왔습니다.

+0

RabbitMQ와 같은 것을 사용 하시겠습니까? – mfonda

+0

언뜻보기에 ... –

답변

1

PHP/Java 브리지를 사용하면 PHP에서 실행중인 Java 프로그램을 호출 할 수 있습니다.

읽기 : http://en.wikipedia.org/wiki/PHP/Java_Bridge

읽기 : http://php-java-bridge.sourceforge.net/pjb/desktop-apps.php

교량 실제로 faq에서, 지역의 소켓 통신을 사용

<?php 
    include_once("Java.inc"); 

$i1 = new Java("your.class", "1"); 
$i2 = new Java("your.class", "2"); 
$i3 = $i1->add($i2); 
echo $i3->toString() . "\n"; 
?> 

Java.inc를 참조하십시오. 그리고 다음 줄을 포함하기 위해 자바 코드를 편집 : 당신은 신/수지로 보일 수 있습니다

static final php.java.bridge.JavaBridgeRunner runner = php.java.bridge.JavaBridgeRunner.getInstance("9267"); 
0

안녕하세요, 기본적으로 PHP에서 자바 응용 프로그램을 실행하고 자바 응용 프로그램의 응답을 받아야합니까?

만약 그렇다면 - 나는 php/java-bridge에서 어떤 문제도 볼 수 없다. 예를 들어, PHP에서 사용자 지정 암호화를위한 Java 암호화 방법을 성공적으로 실행했습니다.

+2

아니요. Java 프로그램이 지속적으로 실행 중이며 일부 정보를 추적하는 OP입니다.심지어 그는 PHP에서 Java를 실행하거나 Java에서 Java를 실행하고 싶지 않다고 말했습니다. –

+0

아니요 끊임없이 실행되는 자바 프로그램이 있고 페이지가로드되어 최신 정보를 가져올 때 실행되는 PHP 스크립트에서 액세스해야합니다. –

+0

오, 예 :) 그 경우 나는 당신의 제안을 고수합니다. 다른 방법은 자바 응용 프로그램에서 PHP 서비스를 호출하거나 자바 코드에서 PHP 스크립트를 호출하는 것입니다. – glg

3

Java 프로세스와 어떤 방식 으로든 통신해야합니다. 웹 서비스가 너무 무거 우므로 소켓을 통해 사용자 정의 텍스트 또는 바이너리 프로토콜로 통신 할 수 있습니다.

또는 Java 프로그램을 매 n 초마다 데이터베이스에 쓰고 PHP 스크립트의 데이터베이스에서 읽을 수도 있습니다.

편집 : PHP의 소켓 클라이언트 예를 들어 http://www.php.net/manual/en/sockets.examples.php에서

봐.

Java의 서버 소켓 예는 http://download.oracle.com/javase/tutorial/networking/sockets/clientServer.html을 참조하십시오.

+0

데이터베이스를 대체 시스템으로 사용하는 방법에 대해 생각해 봤지만 가능한 한 실시간으로 작동 시키려고합니다. 소켓 프로그래밍에 대해 잘 살펴 보지 마십시오. –

+0

명확히하기 위해 소켓을 사용하여 동일한 시스템 내에서 통신 할 수 있습니다. localhost에 대한 소켓과 두 언어 내에서 일관된 포트 번호를 열면 서로 통신 할 수 있어야합니다. –

+0

서버 소켓은 전용 포트 번호로 만들어야합니다 (예 : 4444와 같이 2000에서 60000 사이의 포트 번호를 선택하고이 포트를 사용하는 다른 응용 프로그램이 없는지 확인하십시오). 클라이언트 소켓은 localhost (포트 4444)에 연결되며 OS에 의해 임의의 사용 가능한 포트로 바인드됩니다. 따라서 동일한 시스템에서 동일한 시스템에 많은 클라이언트를 보유 할 수도 있습니다. –

0

합니다. PHP는 Java 웹 서버에서 Java 내에서 실행됩니다. Java 코드를 PHP 함수/명령처럼 호출 할 수 있습니다. 모든 PHP 명령은 지원되지 않으며 대부분 둘 다 지원됩니다. 예를 들어, Quercus에서 WordPress를 실행할 수 있습니다. http://www.caucho.com/resin-3.0/quercus/

관련 문제