php - GuzzleHttp 在使用本地主机时挂起

标签 php codeigniter rest guzzle

这是一个简单的代码片段,但它只是挂起并且没有响应。

    $httpClient = new GuzzleHttp\Client(); // version 6.x

    $headers = ['X-API-KEY' => '123456'];

    $request = $httpClient->request('GET', 'http://localhost:8000/BlogApiV1/BlogApi/blogs/', $headers);
    $response = $client->send($request, ['timeout' => 2]);

    echo $request->getStatusCode();
    echo $request->getHeader('content-type');
    echo $request->getBody();
    die();

非常感谢任何指点。当我在上面使用我的用户名和密码尝试使用 github api 时,我确实收到了 200 响应和大量信息。

最佳答案

问题是在使用 php artisan serve 时,它使用的 PHP 服务器是 single-threaded .

The web server runs only one single-threaded process, so PHP applications will stall if a request is blocked.

你可以这样做 solution :

When making calls to itself the thread blocked waiting for its own reply. The solution is to either seperate the providing application and consuming application into their own instance or to run it on a multi-threaded webserver such as Apache or nginx.

或者,如果您正在寻找快速修复来测试您的更新 - 您可以通过打开两个命令提示符来完成此操作。第一个是运行 php artisan serve(本地我的默认端口是 8000,您将在 http://localhost:8000 上运行您的站点)。第二个将运行 php artisan serve --port 8001

然后您会将您的发帖请求更新为:

$request = $httpClient->request('GET', 'http://localhost:8001/BlogApiV1/BlogApi/blogs/', $headers);

这应该有助于您的测试,直到您能够将所有内容放在服务器或本地虚拟主机上。

关于php - GuzzleHttp 在使用本地主机时挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36947844/

相关文章:

php - 通过表单选择选项插入 mysql 外键值

php - 如何使用 Laravel 将数据转换为 json 格式

javascript - jquery函数不重定向url

mysql - 如何在我的 Codeigniter 模型中使用 SQL LEFT JOIN

rest - 使用 Windows 8 进行 REST 调用时出现 SCRIPT7002 错误

python - 如何为 REST Api 功能设置 Python

php - 我无法将数据库表连接到我的网站以便注册和登录

php - mysql - 已超出 'max_user_connections' 资源

php - 如何使用 codeigniter 在同一字段中搜索 2 个值?

javascript - 如何使用 Express 从一个端点发送多个查询?