php - 在 laravel forge 和 homestead 上慢吞吞

标签 php curl laravel guzzle laravel-forge

我不明白为什么 guzzle 请求在 laravel forge 和 laravel homestead 上真的很慢。我没有更改 forge 和 homestead 上的默认服务器配置。

像这样的每一个简单的请求...

$client = new GuzzleHttp\Client();
$response = $client->get('path-to-my-api');

...大约需要 150 毫秒(在家园和锻造上)。这附加在每个请求(同一网络或互联网)上。我读了一些关于 guzzle 的帖子,它似乎对每个用户来说都非常快,但对我来说不是。

版本:

  • curl 7.35.0 (x86_64-pc-linux-gnu) libcurl/7.35.0 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 librtmp/2.3
  • PHP 版本 5.6.0
  • Guzzle 5.1.0

真正奇怪的是,当我这样做时(异步)...

$req = $client->createRequest('GET', 'path-to-my-api', ['future' => true]);

$client->send($req)->then(function ($response) {
});

...大约需要 10 毫秒。这很棒,但我不明白为什么。而且我不想执行异步请求。

也许我的时间测量有问题,但我认为没关系:我这样使用 PHP 调试栏:

// .....

// synch
Debugbar::startMeasure('synch','SYNCH Request');
$response = $client->get('path-to-my-api');
Debugbar::stopMeasure('synch');

// asynch
Debugbar::startMeasure('asynch','ASYNCH Request');
$req = $client->createRequest('GET', 'path-to-my-api', ['future' => true]);

$client->send($req)->then(function ($response) {
    Debugbar::stopMeasure('asynch');
});

我知道回答这个问题并不容易(因为它很模糊),但我现在没有任何线索:(。如果你愿意,我可以编辑它。非常感谢。

最佳答案

Guzzle 不能慢 - 它只是一个库。您的同步请求可能需要更长的时间,因为您的 API 需要很长时间才能响应,而您的异步请求似乎更快,因为它在收到响应之前不会阻塞网络。

尝试直接在浏览器中调用 API 或在终端中使用 cURL - 您可能会发现存在延迟。

关于php - 在 laravel forge 和 homestead 上慢吞吞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27987763/

相关文章:

javascript - Ionic + Angular POST 请求返回状态 404

php - 无法在 php curl 中启用 cookie

php - 如何从 Laravel5 中的 json 类型响应中获取值

php - 获取字符串中以 @ 开头的所有片段

php - 在sql表中搜索多个值,范围

php - 网址中的不必要数据 Google Analytics

php - 连接两个表,并将某些行数据表示为列

redirect - cURL 遵循重定向,没有原始请求中的 header

laravel:防止数据透视表中出现重复的双峰

php - fatal error 类名必须是有效的对象或字符串