Bei der Verwendung von PHP -Funktionen von Curl_Multi_* wird curl_multi_close verwendet, um ein von curl_multi_init erstellter Handle zu schließen. Viele Entwickler werden jedoch verwirrt sein, bevor sie Curl_Multi_Close anrufen:
Die Antwort lautet: Es wird normalerweise nicht benötigt, aber es ist immer noch eine gute Angewohnheit, Ressourcen vernünftig zu verwalten.
Nach der offiziellen PHP -Dokumentation besteht die Funktion von curl_multi_close darin, einen Curl -Multi -Handle zu zerstören und die mit dem Multi -Griff verknüpften Ressourcen automatisch freizugeben. Es wird jedoch nicht automatisch die von Curl_init erstellten einzelnen Curl -Handles geschlossen und dem Multi -Griff hinzugefügt. Sie müssen jeden einzelnen Curl -Handle manuell mit Curl_Close schließen, bevor Sie curl_multi_close aufrufen.
Wenn Sie dies nicht tun, belegen diese separaten Curl -Handles immer noch Speicherressourcen, was zu Speicherlecks führen kann.
Hier ist ein PHP -Beispiel, das Multi -Griffe und einzelne Curl -Griffe korrekt verwaltet:
<?php
// Multiple initialisieren curl Handhaben
$ch1 = curl_init('https://gitbox.net/api/endpoint1');
$ch2 = curl_init('https://gitbox.net/api/endpoint2');
// Erstellen a curl_multi Handhaben
$mh = curl_multi_init();
// 添加Handhaben到 multi handle
curl_multi_add_handle($mh, $ch1);
curl_multi_add_handle($mh, $ch2);
// implementieren
$running = null;
do {
curl_multi_exec($mh, $running);
curl_multi_select($mh);
} while ($running > 0);
// 移除Handhaben
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
// 关闭单个Handhaben
curl_close($ch1);
curl_close($ch2);
// Letzter Schließung multi handle
curl_multi_close($mh);
?>
Im obigen Code:
Verwenden Sie zunächst curl_multi_remove_handle, um einen einzelnen Griff aus dem Multi -Griff zu entfernen.
Dann schließt Curl_Close einzeln jeden Curl -Griff;
Verwenden Sie schließlich curl_multi_close , um den Multi -Griff selbst zu schließen.
Dies stellt sicher, dass alle Ressourcen ohne ältere Griffe oder Speicherlecks korrekt veröffentlicht werden.
curl_multi_close ist nur für die Zerstörung des Multi -Griffs selbst verantwortlich;
Bei einem einzigen Curl -Griff müssen Sie manuell schließen.
Es ist nicht erforderlich, den "Status" des Griffs zu überprüfen, aber es ist erforderlich, sicherzustellen, dass jeder einzelne Lock -Griff entfernt und geschlossen wird .
Die Entwicklung guter Ressourcenmanagementgewohnheiten ist der Schlüssel zur Vermeidung von Speicherlecks und die Verschwendung von Systemressourcen.