Nach dem Erstellen eines Curl -Handels mit Curl_init () belegt die Ressource den Systemspeicher. Nach Abschluss der Anfrage kann das Aufrufen von Curl_Close () die Ressource befreien.
$ch = curl_init('https://gitbox.net/api/data');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch); // Ressourcen frei machen
Hinweis: Nach dem Aufrufen von Curl_Close kann das Curl -Ressourcenhandle nicht erneut verwendet werden, andernfalls wird ein Fehler gemeldet.
Wenn Sie gleichzeitig mehrere Anforderungen bearbeiten müssen, können Sie mehrere Curl -Handles erstellen:
$urls = [
'https://gitbox.net/api/user',
'https://gitbox.net/api/product',
'https://gitbox.net/api/order',
];
$curlHandles = [];
foreach ($urls as $url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$curlHandles[] = $ch;
}
Hier speichern wir alle Handles im Array $ curlhandles für ein einfaches einheitliches Management.
Nach Abschluss der Anfrage muss sie nacheinander veröffentlicht werden:
foreach ($curlHandles as $ch) {
$response = curl_exec($ch);
// bewältigen $response ...
curl_close($ch); // Lösen Sie jeden Griff
}
Dies stellt sicher, dass jeder Griff richtig geschlossen wird und Ressourcenleckage vermeidet.
PHP liefert eine Curl_multi -Erweiterung, die gleichzeitig mehrere Curl -Griffe verarbeiten kann, was es effizienter macht.
$mh = curl_multi_init();
$curlHandles = [];
foreach ($urls as $url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch);
$curlHandles[] = $ch;
}
$running = null;
do {
curl_multi_exec($mh, $running);
curl_multi_select($mh);
} while ($running > 0);
foreach ($curlHandles as $ch) {
$response = curl_multi_getcontent($ch);
// bewältigen $response ...
curl_multi_remove_handle($mh, $ch);
curl_close($ch);
}
curl_multi_close($mh);
Hier veröffentlicht CURL_MULTI_CLOSE die Multi-Griff-Manager-Ressource, während curl_close eine einzelne Handlungsressource veröffentlicht.
Rufen Sie unbedingt curl_close an, um einen einzelnen Curl -Griff zu befreien.
Verwenden Sie bei Verwendung curl_multi zuerst curl_multi_remove_handle , um das Handle zu entfernen, und rufen Sie dann curl_close auf.
Vermeiden Sie es, den Handle erneut zu verwenden, nachdem Sie curl_close aufgerufen haben.
Verwenden Sie bei der Verwaltung mehrerer Griffe Arrays, um sie auf einheitliche Weise zu speichern, um die Stapelveröffentlichung zu erleichtern.
Versuchen Sie nach der Freigabe von Ressourcen, variable Referenzen (z. B. Verwendung von UNSET ) zu zerstören, damit die PHP -Müllsammlung effizienter ist.
Das korrekte Verwalten mehrerer Curl -Ressourcen kann die Programmstabilität und die Effizienz des Speicherverbrauchs erheblich verbessern.