Ich verstehe nicht, warum Fressanfragen sind wirklich langsam auf Laravel Schmiede und Laravel Gehöft. Ich habe die Standardserverkonfiguration auf Schmiede und Gehöft nicht geändert.Guzzle langsam auf Laravel Schmiede und Gehöft
Jede einfache Anfrage wie dieses ...
$client = new GuzzleHttp\Client();
$response = $client->get('path-to-my-api');
... dauert ca. 150ms (auf Gehöft und Schmiede). Dies hängt an jede Anfrage (gleiches Netzwerk oder Internet). Ich habe ein paar Artikel über guzzle gelesen und es scheint für jeden Benutzer sehr schnell zu sein, aber nicht für mich.
Versionen:
- 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 Version 5.6.0
- Guzzle 5.1.0
Etwas wirklich seltsam ist, dass wenn ich diese (asynchron) ...
$req = $client->createRequest('GET', 'path-to-my-api', ['future' => true]);
$client->send($req)->then(function ($response) {
});
... dauert es etwa 10ms. Es ist großartig, aber ich verstehe nicht warum. Und ich möchte keine asynchronen Anfragen durchführen.
Vielleicht ist meine Zeit Maßnahme ist fehlerhaft, aber ich denke, es ist Ok: Ich PHP Debug-Bar wie folgt verwenden:
// .....
// 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');
});
Ich weiß, es ist nicht leicht, diese Frage zu beantworten (weil es vage ist), aber ich habe keine Ahnung für jetzt :(. Ich kann es bearbeiten, wenn Sie wollen. Vielen Dank.
Das liegt vielleicht daran, dass der erste Aufruf einer Guzzle-Methode viele Guzzle-Klassen lädt und initialisiert, während die zweite schnell ist, weil bereits alles geladen ist. Was, wenn Sie nur den zweiten asynchronen Aufruf direkt messen, ohne zuerst die synchronen Methoden aufzurufen? –
Verwenden Sie Guzzle, um eine API auf Ihrem Server oder von Ihrem Server aus aufzurufen? Haben Sie auch versucht, '' debug '=> false' in app.config zu setzen und dann 'php artisan optimize' auszuführen? Wenn der Debug-Modus eingestellt ist, werden viele unnötige Dateien geladen. – Marcus