Я не понимаю, почему запросы на жадность очень медленны в Laravel Forge и Laravel House. Я не изменил конфигурацию сервера по умолчанию в кузнице и усадьбе.
Каждый простой запрос, как этот …
$client = new GuzzleHttp\Client();
$response = $client->get('path-to-my-api');
… занимает около 150 мс (на усадьбе и кузнице). Это добавляется к каждому запросу (та же сеть или Интернет). Я прочитал несколько постов о жрете, и это кажется очень быстрым для каждого пользователя, но не для меня.
Версии:
Что-то действительно странное в том, что когда я делаю это (асинхронно) …
$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');
});
Я знаю, что нелегко ответить на этот вопрос (потому что он расплывчатый), но пока я понятия не имею :(. Я могу отредактировать его, если хотите. Большое спасибо.
Жрет не может быть медленным — это просто библиотека. Ваши синхронные запросы, вероятно, занимают больше времени, потому что ваш API требует много времени для ответа, а ваши асинхронные запросы, кажется, быстрее, потому что он не блокирует сеть, пока не получит ответ.
Попробуйте вызвать API непосредственно в вашем браузере или использовать cURL в своем терминале — вы, вероятно, обнаружите задержку.
Других решений пока нет …