私はMercurialを使用して、他のリポジトリに基づいてリポジトリを作成しています(つまり、それらをマージする)。これは、サーバー上でPHPを使用しているすてきなウェブインターフェイスによって実現されます。複数のプロセス間でmercurialコマンドサーバを共有
残念ながら、これは非常に遅いです(PHPは現在、要求ごとに約40回のexec()を必要としています)。だから私は、Mercurial 1.9以降で利用可能なコマンドサーバーの使用について考えました。
私は文書を読む限り、単純なhg serve
を開始して、複数のリポジトリ(それぞれのコマンドに-R
オプションを付ける)で動作させることができます。これは素晴らしい。しかし、私はまた、複数の(そして多分並行した)要求の間でコマンドサーバを共有することはできますか?
私は私のPHPスクリプト内からサーバーを起動するには、このような何かをやっている:
$cmd = 'hg serve --cmdserver pipe';
$pipes = null;
$descriptors = array(
STDIN => array('pipe', 'r'),
STDOUT => array('pipe', 'w')
);
$process = proc_open($cmd, $descriptors, $pipes);
if (!is_resource($process)) {
throw new Exception('Could not start command server.');
}
しかし、これは現在のPHPプロセスへのサーバーでのみ使用可能になります。私はパイプやものの使い方に慣れていないので、今度はサーバを一度(PHP以外で)起動して「接続」することは可能ですか?ソケットを開いて、それに読み書きするように。
それが可能なら、それは賢明ですか?複数のPHPプロセスが1つのサーバーのソケット/パイプ/何かを使用し始めるとどうなりますか?
いつものように短くてポイントに。ありがとうございます:-) – xrstf
これは素晴らしい質問です。私は同じことを不思議に思う他の人のためにここでそれを文書化することができてうれしいです。 –