Heim >Backend-Entwicklung >PHP-Tutorial >## Wie kann ich das Abrufen von Bildern von einer Webseite beschleunigen?
So rufen Sie Bilder schneller von einer Webseite ab
Beim Erfassen von Bildern von einer bestimmten URL kann die Erfüllung bestimmter Kriterien die Effizienz des Prozesses verbessern . Dieser Artikel konzentriert sich auf das Extrahieren von Bildern mit einer Breite und Höhe von mindestens 200 Pixeln und zielt darauf ab, den Prozess im Vergleich zur langwierigen Standardmethode zu beschleunigen.
Schnellerer Bildabruf
Der traditionelle Ansatz besteht darin, jedes Bild nacheinander von der Quell-URL abzurufen und getimagesize() zu verwenden, um seine Abmessungen zu überprüfen. Diese Methode kann jedoch langsam und ressourcenintensiv sein. Um die Geschwindigkeit zu optimieren, sollten Sie die folgenden Verbesserungen in Betracht ziehen:
1. Nutzen Sie Parallelität:
Verwenden Sie die Funktion „curl_multi_init()“, um mehrere gleichzeitige HTTP-Anfragen zu starten und Bilder parallel abzurufen. Dieser Ansatz verkürzt die Reaktionszeit erheblich, indem die verfügbare Bandbreite ausgenutzt wird.
2. Bilder lokal speichern:
Vermeiden Sie den Aufruf von getimagesize() für Remote-Bilder. Laden Sie stattdessen die Bilder in ein lokales temporäres Verzeichnis herunter und bestimmen Sie dort ihre Abmessungen. Durch diesen Schritt entfällt die Verzögerung, die mit dem Senden zusätzlicher HTTP-Anfragen verbunden ist.
Zusätzliche Überlegungen:
Verbesserte Leistung:
Durch die Implementierung der oben genannten Techniken kann der Bildabruf erheblich beschleunigt werden. Betrachten Sie das folgende Beispiel:
<code class="php">// Start the timer $start = microtime(); // Fetch images using curl_multi_init $res = imageDownload($nodes, 200, 200); // Stop the timer and display elapsed time echo "<h1>", microtime() - $start, "</h1>"; function imageDownload($nodes, $maxHeight = 0, $maxWidth = 0) { // ... (curl_multi_init code here) ... // ... (curl_multi_exec code here) ... $res = array(); // ... (image processing code here) ... return $res; }</code>
Beispielausgabe:
Array ( [0] => temp/img8cdd64d686ee6b925e8706fa35968da4.gif [1] => temp/img5811155f8862cd0c3e2746881df9cd9f.gif [2] => temp/imga597bf04873859a69373804dc2e2c27e.jpg [3] => temp/img0914451e7e5a6f4c883ad7845569029e.jpg [4] => temp/imgb1c8c4fa88d0847c99c6f4aa17a0a457.jpg [5] => temp/img36e5da68a30df7934a26911f65230819.jpg [6] => temp/img068c1aa705296b38f2ec689e5b3172b9.png [7] => temp/imgfbeca2410b9a9fb5c08ef88dacd46895.png ) 0.076347
Dieser verbesserte Ansatz führt zu erheblichen Leistungssteigerungen im Vergleich zur ursprünglichen Implementierung und reduziert die Verarbeitungszeit um fast 40 Sekunden.
Das obige ist der detaillierte Inhalt von## Wie kann ich das Abrufen von Bildern von einer Webseite beschleunigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!