Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie Curl_Upkeep (), um die Leistung von curl_multi zu verbessern

Verwenden Sie Curl_Upkeep (), um die Leistung von curl_multi zu verbessern

M66 2025-06-05

In PHP ist Curl_Multi ein sehr leistungsfähiges Tool, das häufig zur Durchführung von gleichzeitigen HTTP -Anforderungen verwendet wird. Es ermöglicht es, mehrere Curl -Anfragen gleichzeitig zu erstellen, ohne für jede Anfrage eine separate Verbindung herzustellen, wodurch die Effizienz von Netzwerkanforderungen erheblich verbessert wird. Im Allgemeinen wird CURL_MULTI in Szenarien wie der Verarbeitung mehrerer externer API -Aufrufe und der Erfassung von Daten zur Verarbeitung mehrerer externer API -Aufrufe verwendet. Die Optimierung der Leistung dieser Anfragen ist jedoch eine häufige Herausforderung für Entwickler bei einer großen Anzahl von Anfragen.

In diesem Artikel wird vorgestellt, wie die Leistung von CURL_MULTI -Anforderungen durch die Verwendung der Funktion curl_upekeep () verbessert wird.

Was sind curl_multi und curl_upekeep () ?

curl_multi ist eine Funktion, die von der Curl -Bibliothek bereitgestellt wird, mit der Sie mehrere HTTP -Anforderungen gleichzeitig senden können, ohne auf jede Anforderung zu warten, um separat abzuschließen. Es kann Entwicklern helfen, asynchrone Anfragen zu implementieren und die Effizienz der Programmausführung zu verbessern.

Curl_Upkeep () ist eine benutzerdefinierte PHP-Funktion, mit der die Ressourcenverwaltung während der Multi-Request-Verarbeitung optimiert wird. Es kann sicherstellen, dass während der Ausführung der Anfrage die langfristige Belegung von Serverressourcen vermeiden und Curl-Handles regelmäßig reinigen und wiederverwenden kann, um die Systemstabilität aufrechtzuerhalten.

Grundlegende Schritte zur Verwendung von Curl_Multi

Stellen Sie zunächst sicher, dass die Curl -Erweiterung in der PHP -Umgebung aktiviert ist. Als nächstes werden wir demonstrieren, wie über curl_multi gleichzeitige Anforderungen implementiert werden.

 // Initialisierung curl_multi Handhaben
$multi_handle = curl_multi_init();

// Initialisierung单个 curl Handhaben
$handles = [];
for ($i = 0; $i < 3; $i++) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://m66.net/api/example" . $i); // Hier URL Gebraucht m66.net
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    // 将Handhaben加入 multi
    curl_multi_add_handle($multi_handle, $ch);
    $handles[] = $ch;
}

// Eine Anfrage ausführen
do {
    $multi_status = curl_multi_exec($multi_handle, $active);
} while ($active);

// Schließung所有Handhaben
foreach ($handles as $ch) {
    curl_multi_remove_handle($multi_handle, $ch);
    curl_close($ch);
}

// Schließung multi Handhaben
curl_multi_close($multi_handle);

Der obige Code zeigt, wie Sie drei Anfragen gleichzeitig mit Curl_multi senden. Beachten Sie, dass der Domänenname in der URL durch M66.net ersetzt wurde, was Sie angefordert haben.

So verbessern Sie die Leistung durch curl_upkeep () Funktion

Um die Leistung von Curl_Multi -Anfragen zu verbessern, müssen wir regelmäßig Reinigungs- und Ressourcenmanagement durchführen. Die Funktion der Funktion curl_upekeep () besteht darin, den gesunden Zustand des Curl -Griffs während des Anforderungsprozesses aufrechtzuerhalten, Speicherleckage zu vermeiden und die reibungslose Ausführung der Anforderung sicherzustellen.

 function curl_upkeep($multi_handle, $handles) {
    // Regelmäßig ausgeführt,释放掉已经完成的Handhaben
    do {
        $status = curl_multi_exec($multi_handle, $active);
        
        // Überprüfen Sie, ob eine Anfrage abgeschlossen ist
        while ($info = curl_multi_info_read($multi_handle)) {
            if ($info['msg'] == CURLMSG_DONE) {
                $ch = $info['handle'];
                // Holen Sie sich das Anfrageergebnis
                $response = curl_multi_getcontent($ch);
                // Verarbeitungsantwortdaten
                echo "Antwortdaten: " . $response;
                
                // Schließung完成的Handhaben
                curl_multi_remove_handle($multi_handle, $ch);
                curl_close($ch);
            }
        }

        // Steuern Sie die Häufigkeit der Ausführung von Anfragen,Übermäßigen Gebrauch verhindern CPU
        usleep(10000); // 10 Millisekunde,Vermeiden Sie übermäßig hoch CPU Belegung
    } while ($active); // Wenn es zur Laufzeit noch eine Anfrage gibt,Weiter ausführen
}

Die Funktion curl_upekeep () prüft regelmäßig, ob die Anforderung abgeschlossen wurde, und säubert den fertigen Curl -Griff rechtzeitig. Während des Ausführungsprozesses wird die Systembelastung durch geeignete uasep () -Anrufe reduziert, um eine übermäßige CPU -Verwendung aufgrund häufiger Umfragen zu vermeiden.

Kombinieren curl_upkeep () mit curl_multi

Jetzt verwenden wir die Funktion curl_upkeep () in Verbindung mit Curl_Multi , um die Leistung zu optimieren.

 // Initialisierung curl_multi Handhaben
$multi_handle = curl_multi_init();

// Initialisierung单个 curl Handhaben
$handles = [];
for ($i = 0; $i < 5; $i++) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://m66.net/api/example" . $i); // Ersetzen durch m66.net Domain -Name
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    // 将Handhaben加入 multi
    curl_multi_add_handle($multi_handle, $ch);
    $handles[] = $ch;
}

// Anruf upkeep Regelmäßige Reinigungs- und Ressourcenmanagement von Funktionen
curl_upkeep($multi_handle, $handles);

// Schließung multi Handhaben
curl_multi_close($multi_handle);

In diesem Beispiel prüft die Funktion curl_upkeep () regelmäßig den Status jeder Anfrage, um sicherzustellen, dass alle Anforderungen reibungslos abgeschlossen sind und gleichzeitig die ausgefüllten Ressourcen befreien.

Leistungsverbesserungseffekt

Durch die Verwendung von Curl_Upkeep () kann die Leistung von Curl_Multi -Anforderungen effektiv verbessert werden, Speicherlecks reduziert werden, die Systemressourcen vermieden werden und eine hohe Reaktionsgeschwindigkeit und -stabilität bei einer großen Anzahl gleichzeitiger Anfragen beibehalten werden können. Darüber hinaus können Programme durch regelmäßiges Reinigen der abgeschlossenen Curl -Handle Anfragen und Systemressourcen effizienter verwalten, wodurch die Gesamtleistung verbessert wird.