我有一个在一台服务器上执行的控制器操作。此操作必须触发两个其他服务,这些服务可以位于同一台服务器或其他服务器上(取决于配置的路由)。目前我总是使用 HTTP 请求。但是,如果服务在同一台服务器上,我宁愿直接调用适当的控制器(取决于 url,尊重自定义路由)。
我的请求代码如下所示:
public function buildMultiple($platform, $name, $limit = null, $offset = null) {
$config = $this->getDI()->get('config');
$workerUrl = "{$config->application->WorkerUrl}/$platform/$name/compute/multiple/$limit/$offset";
$response = HttpRequest::get($workerUrl);
$data = json_decode($response)->data;
$clientUrl = "{$config->application->ClientUrl}/$platform/$name/update/multiple";
//TODO if the routes for the client are activated on this server then directly execute the controller
//if($config->application->ClientRoutes) {
// pseudocode:
// $cont = $this->router->getControllerFromUri($clientUrl);
// $result = $this->dispatcher($cont)->call($params, $postData);
// return $result;
//}
// else:
return HttpRequest::post($clientUrl, $data);
}