Guzzle 在 laravel 锻造和 homestead 上变慢

Guzzle slow on laravel forge and homestead

我不明白为什么 guzzle 请求在 laravel forge 和 laravel homestead 上真的很慢。我没有更改 forge 和 homestead.

上的默认服务器配置

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

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

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

版本:

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

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

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

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

也许我的时间测量有问题,但我认为没关系:我这样使用 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 - 您可能会发现存在延迟。