Aktueller Standort: Startseite> Neueste Artikel> CURL_MULTI_CLOSE UND CURL_MULTI_REMOVE_HANDLE -UTPIPTION TIPS

CURL_MULTI_CLOSE UND CURL_MULTI_REMOVE_HANDLE -UTPIPTION TIPS

gitbox 2025-05-12

Die Serienfunktionen curl_multi_* sind sehr wichtige Tools, wenn sie PHP für gleichzeitige HTTP -Anforderungen verwenden. Unter ihnen sind curl_multi_remove_handle () und curl_multi_close () zwei Funktionen, die häufig verwendet werden, aber anfällig für Fehler sind. Ein korrektes Verständnis ihres Nutzungszeitpunkts und der Vorsichtsmaßnahmen kann viele häufige Fallstricke vermeiden.

Was ist curl_multi_remove_handle ()?

Der Zweck von curl_multi_remove_handle () besteht darin, einen einzelnen curl_easy_handle zu entfernen, der dem curl_multi_handle hinzugefügt wurde. Nach dem Entfernen kann dieser einfache Griff separat geschlossen oder wiederverwendet werden, und der Multi -Griff verwaltet ihn nicht mehr.

Hinweis: Wenn Sie kurz vor dem Schließen eines separaten einfacher Griffs müssen Sie ihn zunächst aus dem Multi -Griff entfernen, andernfalls ist das Programmverhalten undefiniert.

Was ist curl_multi_close ()?

curl_multi_close () ist eine Funktion, mit der das gesamte Multi -Griff geschlossen wird. Nach dem Aufrufen wird dieser Multi -Handle nicht mehr verwendet, und alle Ressourcen im Zusammenhang mit dem Multi -Griff werden intern veröffentlicht. Es ist zu beachten, dass das interne Griff nicht automatisch geschlossen wird. Bevor Sie den Multi -Griff schließen, sollten Sie sicherstellen, dass alle einfachen Griffe entfernt wurden.

Richtige Verwendung der Verwendung

Ein korrekter Nutzungsprozess ist normalerweise wie folgt:

  1. Initialisiert Multi -Griffe und mehrere einfache Griffe.

  2. Fügen Sie ein einfaches Griff zum Multi -Griff hinzu.

  3. Führen Sie Multi -Handle aus, um die Anfrage zu verarbeiten.

  4. Entfernen Sie nach Abschluss der Anfrage den einfachen Griff aus dem Multi -Griff.

  5. Schließen Sie jeden einfachen Griff.

  6. Multi -Griff schließen.

Wenn die Bestellung umgekehrt ist, z. B. das Schließen des Multi -Griffs, ohne den einfachen Griff zu entfernen, kann dies zu einer Ressourcenleckage oder einem Absturz führen.

Beispielcode

Hier ist eine vollständige und korrekte Demonstration, die URL verwendet Ihre Anforderungen (Domänenname lautet Gitbox.net ):

 <?php

// Initialisierung multi handle
$mh = curl_multi_init();

// Zwei erstellen easy handle
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "https://gitbox.net/api/endpoint1");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);

$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "https://gitbox.net/api/endpoint2");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);

// Wille easy handle Hinzufügen zu multi handle
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);

// implementieren multi handle
$running = null;
do {
    curl_multi_exec($mh, $running);
    curl_multi_select($mh);
} while ($running > 0);

// Die Antwort abrufen
$response1 = curl_multi_getcontent($ch1);
$response2 = curl_multi_getcontent($ch2);

// Entfernen easy handle
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);

// Schließung easy handle
curl_close($ch1);
curl_close($ch2);

// Schließung multi handle
curl_multi_close($mh);

// Ausgabeinhalt
echo $response1;
echo $response2;
?>

Zusammenfassung der Nutzungstipps

  • Sie müssen zuerst curl_multi_remove_handle () und dann curl_close () einfaches Handle.

  • Stellen Sie vor dem Schließen des Multi -Griffs ( curl_multi_close ) sicher, dass alle einfachen Griffe entfernt wurden.

  • Auch wenn eine einfache Handlungsanforderung fehlschlägt, entfernen Sie sie korrekt und überspringen Sie sie nicht direkt.

  • Das Aufrufen von Curl_Multi_Select () kann die CPU -Verwendung effektiv reduzieren, insbesondere wenn eine große Menge an Parallelität vorliegt.

  • Der Multi -Griff selbst hilft Ihnen nicht dabei, den einfachen Griff freizugeben. Sie müssen sich selbst anrufen.

Das Befolgen dieser Techniken kann nicht nur die Stabilität des Programms gewährleisten, sondern auch effektiv vermeiden Speicherlecks und Ressourcenabfälle.