问题:那这个6个项目是怎么相互调用的呢?新项目又怎么调用呢?
创建一个和这6个项目目录平级的新的项目(codebase),这个项目是一个公共的调用项目。其他所有项目index.php都include codebase中的autoload.php文件。为什么没有选择用composer的办法将新的codebase加入到项目中。由于上线太麻烦了,在codebase中修正一个功能,须要折衷6个项目组中的人去composer update ,同时去上线、测试。这个流程就太漫长了,也不知足我们设计这套方案的初衷。目前只假如新功能都会产生一个独立的项目,如果这几个端口和新功能有关系,那么都是通过rpc的办法来调用。
协议选择:protobuffer、thrift、json-rpc、yar。对付Pb和thrift我觉得还是重了一点,团队中至少目前跨措辞还没有涌现。json-rpc没有找到利用得比较广泛的运用、且关注的人比较少。以是末了选择鸟哥的yar。

yar是一个php的扩展,须要安装,安装方法参考末了链接解释。
rpc的上风是可以调用本地方法一样调用远程的方法,且可以捕获非常,非常方面。
客户端:须要把稳的是client设置超时时间YAR_OPT_TIMEOUT,单位为秒。
以下是copy鸟哥的解释:
<?php$client = new Yar_Client("http://host/api/");$client->SetOpt(YAR_OPT_CONNECT_TIMEOUT, 1000);$client->SetOpt(YAR_OPT_HEADER, array("hd1: val", "hd2: val")); //调用远端做事$result = $client->some_method("parameter");
做事端:一个普通的php-fpm,不是像swoole这种常驻进程。
<?phpclass API { public function some_method($parameter, $option = "foo") { } protected function client_can_not_see() { }}$service = new Yar_Server(new API());$service->handle();
参考:https://github.com/laruence/yar
技能互换QQ群号:1005491328
感谢三橙挪车支持