1

重複の可能性:
Flash クライアントを備えた PHP ソケット サーバー

フラッシュ開発者の助けを借りて、サーバーでアプリを構築しています。彼は、データベースと通信するためのソケット サーバーを構築するように依頼しました。彼は私に JAVA を勧めてくれましたが、私は Java があまり得意ではなく、PHP でソケット サーバーを構築できるかどうか疑問に思っていました。

複数の TCP クライアント接続への接続を許可する必要があります。JAVA ではこれが思考スレッドで行われることは知っていますが、これが PHP でも実現できるかどうかはわかりません。

これらの特徴を持つ PHP Socket Server の基本的な骨組みを教えてください。

接続は、アプリへの接続の開始から終了まで、TCp (永続的) である必要があります。

4

3 に答える 3

2

コマンドラインからサービスとしてソケットサーバーを実行する必要があります。これは私が以前に使用したものの一部です。読み取り後にソケットを閉じますが、接続の配列を維持するように簡単に変更できます。

  • 接続がまだ有効であるかどうかを確認するには、ある種のウォッチドッグを作成する必要があります。
  • さまざまな接続を識別するための識別メカニズムが必要です。

コード:

set_time_limit( 0 );
// Set the ip and port we will listen on
$address = '127.0.0.1';
$port = 6789;

// Create a TCP Stream socket
$sock = socket_create( AF_INET, SOCK_STREAM, 0 ); // 0 for  SQL_TCP
// Bind the socket to an address/port
socket_bind( $sock, 0, $port ) or die( 'Could not bind to address' );  //0 for localhost
// Start listening for connections
socket_listen( $sock );

//loop and listen
while (true) {
  /* Accept incoming  requests and handle them as child processes */
  $client = socket_accept( $sock );
  // Read the input  from the client – 1024000 bytes
  $input = socket_read( $client, 1024000 );

  // from here you need to do your database stuff
  // and handle the response 

   // Display output  back to client
  socket_write( $client, $response );
  socket_close( $client );
}
// Close the master sockets
socket_close( $sock );
于 2012-10-05T09:37:19.217 に答える
0

PHPAtGoogleコード用のWebSocketサーバーおよびクライアントライブラリがあります。フラッシュクライアントをサポートします。それがあなたの問題を解決するかどうかわからない。

基本的なチュートリアルが必要な場合は、ここに学習するためのリンクがあります

PHPでソケットサーバーを作成する方法

編集:-あなたのコメントを見た後(サービスとして継続的にソケットサーバーを実行している)

ソケットサーバーを作成し、プロセスとして実行する方法を説明するリンクは次のとおりです

PHPでソケットサーバーを作成し、サービスとして実行します

于 2012-10-05T09:36:49.653 に答える
0

「ソケット サーバー」を構築するのではなく、DB への限定的かつ明確に定義されたアクセスを提供する一連の Web API (SOAP、REST/JSON など) を実際に構築する必要があります。次に、Flash アプリでそれを使用します。

Flash アプリは、RESTful インターフェイスまたは SOAP/XML リクエストを介して JSON を送信します。サーバーはそれらを受け取り、データベースと適切に対話し、必要な結果を XML または JSON として再度返します。

于 2012-10-05T12:47:02.437 に答える