Php 在拉拉维尔锻造厂和宅基地上慢慢地狂饮

Php 在拉拉维尔锻造厂和宅基地上慢慢地狂饮,php,curl,laravel,guzzle,laravel-forge,Php,Curl,Laravel,Guzzle,Laravel Forge,我不明白为什么在拉雷维尔锻造厂和拉雷维尔宅基地的豪饮请求真的很慢。我没有更改forge和homestead上的默认服务器配置 每一个像这样的简单请求 $client = new GuzzleHttp\Client(); $response = $client->get('path-to-my-api'); 。。。大约需要150毫秒(在homestead和forge上)。这会附加在每个请求上(相同的网络或internet)。我读了一些关于guzzle的帖子,它似乎对每个用户都很快,但对我来

我不明白为什么在拉雷维尔锻造厂和拉雷维尔宅基地的豪饮请求真的很慢。我没有更改forge和homestead上的默认服务器配置

每一个像这样的简单请求

$client = new GuzzleHttp\Client();
$response = $client->get('path-to-my-api');
。。。大约需要150毫秒(在homestead和forge上)。这会附加在每个请求上(相同的网络或internet)。我读了一些关于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
真奇怪的是,当我这样做(异步)

。。。大约需要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,您可能会发现延迟存在。

这可能是因为对Guzzle方法的第一次调用加载并初始化了Guzzle的许多类,而第二次调用速度很快,因为所有内容都已加载。如果您只测量第二个异步c直接调用所有同步方法,而不首先调用同步方法?您是使用Guzzle在服务器上还是从服务器上调用API?此外,您是否尝试过在app.config中设置
“debug”=>false
,然后运行
php artisan optimize
?设置调试模式时,会加载大量不必要的文件。
// .....

// 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');
});