Heim >Backend-Entwicklung >PHP-Tutorial >## Wie kann ich das Abrufen von Bildern von einer Webseite beschleunigen?

## Wie kann ich das Abrufen von Bildern von einer Webseite beschleunigen?

Susan Sarandon
Susan SarandonOriginal
2024-10-27 16:17:291033Durchsuche

##  How Can I Speed Up Image Retrieval from a Webpage?

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:

  • Behandeln Sie Bilder, deren URLs kein explizites „http“-Präfix enthalten.
  • Überprüfen Sie die Gültigkeit von Bildern, bevor Sie versuchen, sie zu speichern.
  • Legen Sie ein temporäres Speicherverzeichnis für die abgerufenen Bilder fest.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn