当前位置: 首页 > 知识库问答 >
问题:

Guzzle挂起通信两个api

庾奇思
2023-03-14

在我的应用程序中,有两台laravel 5.2服务器正在运行,它们需要相互交互以使用guzzle获取资源。

在我的服务器1中,我使用League Transformer返回一些数据,但数据需要包含来自服务器2的资源。我使用转换函数中的guzzle获取数据:

public function transform(MyModel $model) {

        $client = new Client();
        $result = $client->request('GET', 'localhost:8000/api/companies/'.$model->company_id);
        $company= $result->getBody()->getContents();

        $data = [
        'id' => (int) $model->id,
        'name' => $model->name,
        'status' => $model->status,
        ];

        $data['company'] = json_decode($company);
        return $data;
    }

当我请求将此资源发送到本地主机:4040/api/models/1时,我得到以下响应:

"data": {
    "id": 1,
    "name": "John Doe",
    "status": "active",
    "company": {
        "data": {
            "id": 1,
            "name": "My Company",
        }
    }

我面临的问题是当我需要使用guzzle从服务器2访问MyModel(存储在服务器1中)时,因为我需要向服务器1发出请求:

$result = $client->request('GET', 'localhost:4040/api/models/'.$model->_id);

服务器1需要向服务器2(在转换器中)发出请求才能获得公司。这使得客户端永远等待并且永远不会得到响应。我尝试使用异步请求,但我得到一个空响应,如果我强制promise等待,它也永远挂起。

共有1个答案

空慈
2023-03-14

您是否使用PHP的集成Web服务器在本地运行应用程序?如果是,那么这就是问题所在。

PHP的集成Web服务器只能同时处理一个请求

服务器1需要向服务器2发出请求

尝试在 Apache/nginx/...

 类似资料:
  • 我刚开始使用ReactJS,有点被我遇到的一个问题卡住了。 我的应用程序本质上是一个带有过滤器和更改布局的按钮的列表。目前我正在使用三个组件:、和,显然,当我更改中的设置时,我希望触发中的某个方法来更新我的视图。 我如何使这3个组件相互交互,或者我需要某种全局数据模型,在那里我可以只对它进行更改?

  • 问题内容: 我刚开始使用ReactJS,但对我遇到的问题有些困惑。 我的应用程序本质上是一个带有过滤器的列表和一个用于更改布局的按钮。目前我使用的三个组成部分:,和,现在很明显,当我更改设置,在我想引起一些方法来更新我的看法。 如何使这三个组件相互交互,或者我需要可以对其进行更改的某种全局数据模型? 问题答案: 最佳方法取决于您计划如何安排这些组件。现在想到的一些示例场景: 是的子组件 这两个和是

  • 我对TaskStackBuilder和用于通知的不同挂起内容的组合有问题。让我解释一下是关于什么的。 我有一个IntentService,它会在出现问题时发出通知。有时它会创建几个独立的通知。为什么我不像谷歌说的那样合并通知?因为每个通知都应该打开相同的活动,但在传递的意图中有不同的额外内容。所以,下面是一个学生应该做的: 用额外的东西创造新的意图: 现在是棘手的部分——我想用适当的后堆栈打开It

  • 关于基于代理的模型,我有一个问题。 我建立了两个代理。一个有状态图。我希望状态图能够通过发送消息或其他方式被其他代理使用。 我该怎么做?

  • 问题内容: 方法论问题: 我有一个“主” python脚本,该脚本在系统上无限循环地运行,并且我想偶尔与其他一些python脚本一起向其发送信息(例如,json数据字符串),这些脚本稍后将由本人或另一个程序启动并且将在发送字符串后立即结束。 我不能在这里使用子流程,因为我的主脚本不知道其他脚本何时运行以及它们将执行什么代码。 我正在考虑使主脚本在本地端口上侦听,并使其他脚本在该端口上向它发送字符串

  • 我有一个Minecraft服务器,它被配置为根据游戏中发生的事件更改我的LED灯条的颜色,但是,此服务器仅在我的计算机上运行时才起作用。这是因为它需要使用Arduino来控制LED灯条。 我想知道是否有任何方法可以通过两个不同的jar文件进行通信,这样当Minecraft中发生事件时,它就会通过一个完全不同的文件告诉我的计算机。 例如:我使用像Server.pro这样的《我的世界》服务器托管商。每