2012-03-17 23 views
-1

私はゲームサーバーアプリケーション(Java)を使用しており、PHPと直接通信したいと考えています。例えば、ユーザのリストを返すコマンド(PHPから)を送る。などPHPとJavaサーバーとの接続

どのように私はPHPとJavaのインタフェースすることができ、ゲームサーバから特定のプレーヤーを蹴りますか?私はいくつかのことを考えましたが、これらのうちのどれかが機能しますか?介して通信

  • のJavaゲームサーバ
  • (別のポートに)遠隔制御するための追加のサービス(例えば、HTTPサーバ)を実行しているPHPとJava。データベース - たとえばJavaは、PHPは、
  • サーバがトラフィックを処理するサーバーに接続
  • サーバへのto-doの両方のJava(ソケットなど)を接続する2
    • をインタフェース付加サービスに接続
    • JavaとPHPをコマンドテーブルをチェックしますいずれかの方法で最善だろうとどのように私は、そのメソッドを実装するに行くか

答えて

4

あなたが解決しようとしている問題の正確な条件は私には分かりません。しかし、いくつかのシナリオを提案しましょう。うまくいけば、少なくとも1つはあなたの問題に対応しています。

まず、JavaコードとPHPコードの両方がWebサーバーにあると仮定しています。つまり、標準のhttpプロトコルを使用して実行できます。 phpでは、標準$ _REQUESTオブジェクトと標準出力メソッド(ヘッダやエコーなど)を使用できる.php Webページがあることを意味します。同様に、javaでは、コードがサーブレットまたはJSPに存在し、標準の要求および応答オブジェクトを使用することを意味します。

下記のjavaとphpの間でグローバルデータを共有する方法について説明しますが、それについては心配しないでください。

1)ゲームはブラウザ(またはWebサーバーと通信するためにhttpを使用する別のプログラム)で実行されており、javaとphpを別々に呼び出したいと考えています。その場合、ゲームコードは引数を渡すための標準のGETまたはPOSTメソッドを使用して、コードによって返された応答テキストを処理するだけで、適切なURLを呼び出します。しかし、シナリオがあなたの質問に答えないと思う。

2)あなたのjavaがあなたのPHPを呼び出すようにするには、java.netクラス(URLなど)を使用してPHPページを呼び出すことができます。 http://docs.oracle.com/javase/tutorial/networking/urls/index.html

3)同様に、あなたのPHPであなたのJavaを呼びたい場合、いくつかの可能性があります。最も一般的なのは、CURL PHP拡張です。ここでこれを行う方法についての良い議論があります:How to send a GET request from PHP?ところで、上記のJava Bridgeではこの方法を使用しています。

これで、javaとphpの間でどのようにデータを共有できますか?コード間でグローバルデータを共有する必要がない場合は、前述のように、httpを使用してリクエストパラメータを渡したり、テキスト出力応答を返すことができます(json、xmlなど)。しかし、共有する必要があるグローバルデータがある場合、それはもう少し複雑です。 javaとphpの間でメモリ共有がないので(少なくとも私が知っている限り)、サーバーファイルシステムを使用してデータを共有する必要があります。 javaとphpの両方がファイルを読み書きできるので、コードを書く上で問題はありません。しかし、並行性の問題があります。複数のコードがまったく同じ時刻にグローバルデータにアクセスして変更することが可能な場合は、データの変更が失われたり、データが破損する可能性があるため、心配する必要があります。したがって、上記のように最も簡単な解決法は、データベースソフトウェアを使用することです。これはデータベースソフトウェアがあなたのために並行処理を行うためです。さもなければ、ファイルロックメカニズムのいくつかを持たなければなりません。これは実行可能ですが、おそらくそれほど価値はありません。

2

Javaサーバーはどのように通信しますか? TCPソケット?どのような通信方法であっても、PHPアプリケーションを、望ましい通信方法を使用してJavaサーバーと直接インターフェースすることをお勧めします。

サーバはTCPを介して通信しなければ、そのようhttp://www.devshed.com/c/a/PHP/Socket-Programming-With-PHP/

としてPHP経由でTCPを使用するためのTCPライブラリやチュートリアルは、確かに存在している(彼らは悪いじゃないが)、私はあなたの他のソリューションに対してお勧めします彼ら理由あなたが維持する必要がある不要な複雑さを追加します。たとえば、あなたのアイデアが好きな最初のオプション(HTTP仲介)は、HTTPサーバー内に同じTCP(?)インターフェイスコードを記述することになりますが、PHPコードに記述してHTTPサーバープロジェクト。あなたのセットアップに関する

詳細は役立つかもしれないが、これは私が問題にアプローチする方法を一般的な考え方です。

+0

あなたのコードはあなたのコードだけです。もっと多くのコード=このビューでは、TCP/IPに基づいた独自のプロトコルが最悪です – SergeS

+0

SergeS - わかりません。 「プロトコルの仲介者」(これも「あなたのコード」ともなります)として機能するまったく新しいプロジェクトは、保守が容易でコードが少ないと言っていますか? – janoside

+0

JavaとPHPの両方でSOAPサービスを簡単に構築できるのであれば、SOAPのようなサービス間のインタフェースにはすでに数多くの洗練されたプロトコルが存在していることは間違いありません。 – SergeS

2

最も簡単な解決策は、たとえば、MySQLデータベースを介してPHPとJavaを接続することです。どちらもそれをサポートしています。

そして、あなたはコマンドを送信する必要がある場合はPHPで二つの方法

  • がある - DBに格納するコマンドは。 JavaアプリケーションではDB内のいくつかのコマンドがある場合に
  • は、SOAPに基づいて、本当にシンプルなインターフェイスを作成します(タイマーや...を使用するか)ループ内でチェックを行い、ポストコマンドを、このインタフェースを介して(私の知る限り、JavaでSOAPライブラリすぎがあります) 。(しかし、唯一のコマンドのSOAP通信を行う、DBへの出品や変更は、DBサーバを経由してsimplierと高速化することができます)
関連する問題