我正在使用Mercurial基于其他存储库创建存储库(即将它们合并在一起)。这是通过在服务器上使用PHP的一个很好的小型web界面完成的。在多个进程之间共享mercurial命令服务器
不幸的是,对于某些任务来说,这是非常慢的(难怪,PHP目前需要每次执行exec()hg大约40次)。所以我想过使用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进程开始使用一个服务器的套接字/管道/什么时会发生什么?
一如既往的简短和重点。谢谢:-) – xrstf 2012-01-08 15:22:01
这是一个很好的问题,我很高兴我们可以在这里为其他想知道同样事情的人记录它。 – 2012-01-08 15:32:32