2011-12-02 22 views
5

私は健全なJava APIを持ったJavaプログラムを持っていますが、私のJavaアプリケーションとPHPスクリプトの間には、私のプロジェクトの要件であるプリミティブなインタフェースを構築します。JavaアプリケーションとPHPを実行

私の最初の試みは、jarを実行するパススルー機能を実行するPHPスクリプトを作成することでした。すなわち

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

jarファイルが起動し、実行されなければならなかったので、これは私の次の試みはusinによってTomcat7上のサーブレットを作成し、PHPでそれをインターフェースとした

など働いていたが、かなり遅いことが判明しましたcurl()コマンド。すなわち

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

これは、優れた性能を持っていたが、サーブレットは非常に不安定だったと(私は10秒ごとに約1要求でサーバーのロードされた)

私はスタックオーバーフローが求めに来て約5分後に墜落しました。私はこれを正しくやっていますか?より良い方法がありますか?私のJavaプログラムをjvmで実行し、PHPを使ってそれと対話させるにはどうすればよいですか?

おかげ

+0

私があなたの場合は、2番目の方法を使用しますが、サーブレットの安定性を改善します。それがクラッシュする理由を知っていますか?また、それは本格的なJVMクラッシュですか、それともサーブレットの例外ですか? – Tom

+0

サーブレット例外でした。私は安定したJettyに切り替えて問題を解決しました – Tucker

答えて

3

物事を処理するJavaメソッドと物事を処理するPHP方法の違いの世界があります。

PHPは、基本的に、各リクエストごとにすべてのスクリプトを最初から最後まで実行します。これは非常に命令的なプログラミング手法になります。一方、Javaは、通常、複数のリクエストに対して複数のメモリに残っているモジュールによって処理されます。 2つを統合するには、「関数呼び出し」以外のものも考慮する必要があります。これらの2つの環境をきれいにメッシュ処理する方法を検討する必要があります。

PHPリクエストごとにJavaを起動すると、JavaにPHPのように動作するように要求されます。言い換えれば、あなたはPHPのように動作させることによって、Javaを使用する最も良い理由のほとんどを捨てようとしています。代わりに、Tomcat(または類似のもの)インスタンスを設定し、あるものから別のものに要求を渡すことを検討してください。言い換えれば、PHPがJava環境へのWeb要求を行うようにしてください。Java要求は、Javaインタープリタの完全なビルドアップとティアダウン(PHPの処理方法です)なしで処理します。

1

私はJARを使用しようとしたので、PHPとJavaを同じマシンに置くことができます。この文書はJava integration in PHPで非常にエキサイティングです。私はそれを使用したことはありませんが、私はそれが存在することを知っているだけです。はじめにを読んでください。

関連する問題