2012-03-15 12 views
2

私はPHPで、さまざまなリモートクライアントと通信する小さなサーバーデーモンを開発しています。しかし、同じマシン上で動作する別のデーモンは、できるだけ早く最初のデーモンと通信する必要がありますが、数百KBのデータを絶えず送信していることがあります。私はかなり肯定的ですが、私はこれら2つのデーモンの間にtcp接続を使用したいと思うでしょうが、それは私がいくつかのアドバイスが必要なところです。今すぐあなたが尋ねる前に、私は単純に両方を同じデーモンに組み合わせることはできません。なぜなら、2番目はJava、.net、C++、Python、Rubyなどの複数の言語のいずれかで書かれているからです。 PHPをtcp接続を使わずに(あるいは自分のニーズに合わないシステムコールを使って)、パフォーマンスを犠牲にすることなく、PHPを他の言語と話せるようにするために、私はすべて耳を傾けていますが、私は本当にそれを行うのクリーンでシンプルな方法を見つけることはできません - 少なくとも1つのサイズのすべてのファッションにファッションにはない。他のプロセスが同じマシン上にあるのでPHPデーモンと話す

+1

UNIXドメインソケットは、常にTCPよりも高速です。ローカル専用通信にtcpを使用しないでください。 –

答えて

2

proc_open()の使用について、そしてあなただけの書き方/パイプ(STDIN/STDOUTなど)に作成さから読みますか?

これはsystem()/popen()コールと似ていますが、他のプロセスの読み書きが可能で、もちろんTCPソケットのオーバーヘッドは避けられます。

+0

恐ろしい!私はそれを試してみましょう。あなたが1回の書き込み/読み取り操作で約1MBのデータを賞賛していても、これがうまくいくと思いますか? – Xealgo

+1

@Xealgoはい、問題ありません - UNIXソケット(パイプ)経由の通信は非常に高速です。 –

1

ソケットを使用できます。 PHPはソケット実装を持っています:http://www.php.net/manual/en/ref.sockets.php

私はCでソケットプログラミングを行っていますが、あなたがリストしている他の言語のほとんどは、ソケットでうまく動作するはずです。

PHPでは、socket_bind()を使用してソケットに接続します。同様に、他のデーモンと同等の処理を行う必要があります。

+0

私はすでにこれで少し作業していますが、とにかくあなたのためにありがとう! – Xealgo

関連する問題