Aktueller Standort: Startseite> Neueste Artikel> So schließen Sie mehrere Curl -Verbindungen korrekt mit curl_multi_close

So schließen Sie mehrere Curl -Verbindungen korrekt mit curl_multi_close

gitbox 2025-05-12

In PHP wird die Funktionsfamilie curl_multi_* verwendet, um mehrere Curl -Anforderungen gleichzeitig auszuführen. curl_multi_close () ist eine wichtige Funktion in dieser Reihe, um mehrere Curl -Handles zu schließen, die von curl_multi_init () initialisiert wurden.

Was ist die Funktionserie curl_multi_* ?

Die Funktionsfamilie curl_multi_* ist ein Tool in PHP zur Verarbeitung mehrerer Curl -Anforderungen parallel. Sie ermöglichen es Ihnen, mehrere HTTP -Anfragen gleichzeitig zu senden, ohne auf jede Anfrage zu warten, bevor Sie die nächste senden. Auf diese Weise können mehrere Anfragen erheblich bearbeitet werden, insbesondere wenn mehrere APIs oder Websites angefordert werden müssen.

Common Curl_Multi_* Funktionen sind:

Warum verwenden Sie curl_multi_close () ?

Wenn mehrere Curl -Anforderungen mit der Funktion curl_multi_* ausgeführt werden, ist jede Anforderung unabhängig und jede Anforderung hat ihren eigenen Ressourcenverbrauch. Um sicherzustellen, dass diese Ressourcen rechtzeitig nach Abschluss der Anfrage freigegeben werden können, muss CURL_MULTI_CLOSE () aufgerufen werden, um die Verbindung zu schließen.

Wenn Sie nicht curl_multi_close () verwenden, können diese Curl -Handles weiterhin Speicher und andere Ressourcen aufnehmen und Leistungsprobleme und sogar Speicherlecks verursachen. Daher ist es sehr wichtig, diese Verbindungen nach Abschluss der Anfrage ordnungsgemäß zu schließen.

CURL_MULTI_CLOSE () Nutzungsbeispiel

Hier ist ein Beispiel, das zeigt, wie man curl_multi_close () verwendet, um mehrere Curl -Verbindungen zu schließen.

 <?php
// Multiple initialisieren cURL Handhaben
$mh = curl_multi_init();

// Definieren Sie, was zu beantragen ist URL Liste
$urls = [
    "https://gitbox.net/api/endpoint1",
    "https://gitbox.net/api/endpoint2",
    "https://gitbox.net/api/endpoint3"
];

// Lagerung cURL Handhaben
$ch_handles = [];

// Erstellen Sie jeweils cURL Handhaben并添加到 multi Handhaben中
foreach ($urls as $url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($mh, $ch);
    $ch_handles[] = $ch;
}

// Mehrere Anfragen ausführen
$running = null;
do {
    curl_multi_exec($mh, $running);
} while ($running > 0);

// Holen Sie sich den Inhalt jeder Anfrage und schließen Sie ihn cURL Handhaben
foreach ($ch_handles as $ch) {
    $content = curl_multi_getcontent($ch);
    echo $content . "\n"; // Den zurückgegebenen Inhalt ausgeben
    curl_multi_remove_handle($mh, $ch);
    curl_close($ch); // Schließen Sie jeden cURL Handhaben
}

// Schließung multi Handhaben
curl_multi_close($mh);
?>

Code analysieren

  1. Initialisieren Sie mehrere Curl -Griffe :

    • Verwenden Sie curl_multi_init (), um ein neues Multi -Handle zu erstellen, das mehrere Curl -Anforderungen verwaltet.

  2. Fügen Sie mehrere Curl -Griffe hinzu :

    • Erstellen Sie für jede URL einen Curl -Handle, setzen Sie relevante Optionen und fügen Sie diese Griffe über CURL_MULTI_ADD_HANDLE () zum Multi -Handle hinzu.

  3. Führen Sie die Anfrage aus :

    • Verwenden Sie curl_multi_exec (), um alle Anforderungen auszuführen, bis alle Anforderungen abgeschlossen sind.

  4. Holen Sie sich den Inhalt und schließen Sie den Griff :

    • Verwenden Sie curl_multi_getContent (), um den von jedem Curl -Handle zurückgegebenen Inhalt zu erhalten. Entfernen Sie nach Abschluss den Handle über das Multi -Handle über curl_multi_remove_handle () und schließen Sie jeden einzelnen Curl -Handle mit Curl_Close () .

  5. Schließen Sie den Multi -Griff :

    • Rufen Sie schließlich curl_multi_close () auf, um den Multi -Griff zu schließen und alle Ressourcen zu befreien.

Zusammenfassung

Die korrekte Verwendung von curl_multi_close () ist ein wichtiger Schritt, um sicherzustellen, dass mehrere Curl -Anforderungsressourcen rechtzeitig veröffentlicht werden. Denken Sie bei der parallelen Bearbeitung mehrerer Anforderungen daran, curl_multi_close () aufzurufen, nachdem jede Anforderung ausgeführt wurde, um alle relevanten Curl -Verbindungen zu schließen. Dies verhindert nicht nur Speicherlecks, sondern verbessert auch die Effizienz des Codes.