2011-12-02 75 views
5

我有一個Java程序,有一個健康的Java API,但我想在我的Java應用程序和PHP腳本之間建立一個原始接口,因爲這些是我的項目的要求。運行Java應用程序和PHP

我的第一次嘗試是編寫一個運行jar的passthru函數的PHP腳本。即

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

這個工作,但被證明是相當緩慢的,因爲jar文件必須啓動和執行等

我的下一個嘗試是在Tomcat7創建一個servlet和全光照的用PHP接口,它curl()命令。即

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

這有出色表現,但該servlet是非常不穩定的,約5分鐘後墜毀(我是加載服務器1請求每隔10秒)

我來堆棧溢出問:我在做這個對嗎?有沒有更好的辦法?我如何讓我的java程序在jvm中運行並使用PHP與它交互?

感謝

+0

如果我是你,我會使用你描述的第二種方法,但是提高servlet的穩定性。你知道它爲什麼會崩潰嗎?此外,它是一個成熟的JVM崩潰,還是它在servlet中是一個例外? – Tom

+0

這是一個servlet異常。我通過切換到穩定的Jetty解決了這個問題 – Tucker

回答

3

有處理事物的Java方法和處理事情的方法PHP之間的天壤之別。

PHP基本上爲每個請求從頭到尾運行每個腳本,這相當於一個非常必要的編程技術。另一方面,Java通常通過模塊處理內存中的東西,這些模塊在多個請求中保留在內存中。爲了整合這兩者,你需要考慮的不僅僅是「函數調用」,你需要考慮如何將這兩個環境完全網狀化。

每個PHP請求啓動java會要求Java的行爲像PHP一樣。換句話說,您將放棄使用Java使其像PHP一樣工作的大多數最佳理由。相反,考慮設置一個Tomcat(或類似的)實例並將請求從一個傳遞給另一個。換句話說,讓PHP向Java環境發出一個Web請求,該環境不需要Java解釋器的完整構建和拆卸(這是PHP處理事物的方式)就可以處理這些事情。

1

我假設因爲你試圖使用JAR,你可以在同一臺機器上有PHP和Java。你可能會發現這個文件在Java integration in PHP相當令人興奮。請注意,我從來沒有使用它,我只知道它存在。一定要閱讀介紹。