2011-02-25 53 views
2

我有一個apache2 web服務器與PHP安裝和工作。我想知道是否有任何方法可以讓PHP腳本訪問正在不斷運行的Java程序,主要是獲取進程追蹤的信息。 Java程序不是一個web應用程序或運行在apache服務器中。這是一個單獨的程序。PHP獲取數據或與正在運行的Java進程交互。 (我認爲不同於PHP/Java橋)

我一直在研究PHP/Java Bridge系統,它們看起來都是讓你從PHP運行Java程序,反之亦然,這不是我所需要的。我可以通過在localhost上運行的Web服務和SOAP來實現這一點,但如果有辦法避免這種情況,並且我可以直接訪問Java程序,那麼我可以讓我的Web應用程序運行得更快。

我試圖「交談」的Java應用程序是我編寫的程序,因此如果需要設置Java程序內的某些內容,我可以訪問源代碼以進行必要的更改。

在此先感謝,我一直在尋找這樣的東西。

+0

會使用類似RabbitMQ的東西嗎? – mfonda 2011-02-25 23:43:22

+0

乍一看,它可能...... – 2011-02-26 04:50:48

回答

1

PHP/Java Bridges允許您從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。 並編輯您的java代碼以包含以下行:

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

嘿,所以基本上你需要從PHP運行java應用程序並從java應用程序獲得響應?

如果這樣 - 我看不到任何問題來自php/java橋樑。例如,我已經成功地在php中運行用於自定義加密的java加密方法。

+2

不可以。OP是指Java程序一直在運行,並跟蹤一些信息。他甚至說他不想從PHP運行Java,反之亦然。 – 2011-02-25 23:28:52

+0

不,我有一個不斷運行的java程序,我需要從一個php腳本訪問它,當一個頁面被加載以提取最新信息時,它將運行。 – 2011-02-25 23:29:07

+0

哦,是啊:)在這種情況下,我堅持你的建議。其他解決方法是從Java應用程序調用php服務或從java代碼調用php腳本。 – glg 2011-02-25 23:34:16

3

您需要以某種方式與Java進程進行通信。由於Web服務太重,您可以通過套接字與自定義文本或二進制協議進行通信。

或者你也可以讓Java程序每隔n秒鐘寫一個數據庫,然後從你的PHP腳本的數據庫中讀取數據。

編輯:

http://www.php.net/manual/en/sockets.examples.php在PHP套接字客戶端的例子。

請參閱http://download.oracle.com/javase/tutorial/networking/sockets/clientServer.html瞭解Java中的服務器套接字示例。

+0

我曾考慮過使用數據庫作爲後備,但我想盡可能實時地使用數據庫。我看看套接字編程。 – 2011-02-25 23:30:42

+0

只是爲了澄清,可以在同一臺機器上使用套接字進行通信,我只需要在兩種語言中打開一個套接字到本地主機和一個一致的端口號,並且它們應該能夠使用它來相互通信? – 2011-02-25 23:36:28

+0

必須在專用端口號上創建服務器套接字(在2000和60000之間選擇它,例如4444,並確保沒有其他應用程序使用此端口)。客戶端套接字連接到端口4444上的本地主機,並被操作系統綁定到隨機可用端口。因此,您甚至可以在同一臺計算機上爲同一臺服務器提供大量客戶端。 – 2011-02-25 23:43:11

0

您可能會看看櫟樹/樹脂。 PHP在Java Web服務器上運行在Java內部。您可以像調用PHP函數/命令一樣調用Java代碼。所有的PHP命令都不被支持,大部分都是。例如,你可以在Quercus下運行WordPress。 http://www.caucho.com/resin-3.0/quercus/