Heim  >  Artikel  >  Backend-Entwicklung  >  Wie man mit dem Timeout der PHP-Schnittstelle umgeht

Wie man mit dem Timeout der PHP-Schnittstelle umgeht

(*-*)浩
(*-*)浩Original
2019-09-25 11:15:363604Durchsuche

Im Allgemeinen greifen wir auf viele Arten auf HTTP zu, hauptsächlich über Curl, Socket, file_get_contents() und andere Methoden.

Wenn der Server der anderen Partei nie antwortet, geraten wir in eine Tragödie. Es ist leicht, den gesamten Server zu zerstören, daher müssen wir auch das Timeout-Problem beim Zugriff auf http berücksichtigen.

Wie man mit dem Timeout der PHP-Schnittstelle umgeht

[CURL-Zugriff auf HTTP]

CURL ist eine häufig verwendete Bibliothek, die wir häufig für den Zugriff auf die HTTP-Protokollschnittstelle verwenden. , hohe Leistung und einige Funktionen zur Unterstützung der Parallelität. (Empfohlenes Lernen: PHP-Programmierung vom Einstieg bis zur Beherrschung)

Lassen Sie uns die cURL-Erweiterung verwenden, um die Timeout-Kontrolle zu handhaben

Wenn Sie eine präzisere Verarbeitung für Timeouts wünschen, Verwenden Sie die cURL-Erweiterung, mit der Sie das Verbindungszeitlimit und das Lesezeitlimit festlegen können (CURLOPT_TIMEOUTCURLOPT_CONNECTTIMEOUT).

Wenn Sie steuern möchten, ob die HTTP-Schnittstelle auf Millisekundenebene zurückkehren muss, können Sie auch die Konstanten CURLOPT_TIMEOUT_MS und CURLOPT_CONNECTTIMEOUT_M verwenden.

Beachten Sie, dass Sie bei Verwendung dieser beiden Konstanten curl_setopt($ch, CURLOPT_NOSIGNAL, 1);

Die Magie ist hier, die cURL Der Erweiterungsmechanismus ist sehr wichtig. Insbesondere werden so viele Daten zurückgegeben, wie zum angegebenen Lesezeitpunkt abgerufen werden. Anschließend wird der Aufruf beendet und das Programm meldet keinen Fehler.

Sehen Sie sich den Code an:

function e_curl() {
    global $url;
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 3);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1);
    $response = curl_exec($ch);
    if ($response === false) {
        $info = curl_getinfo($ch);
        if ($info['http_code'] === 0) {
        return false;
        }
    }
    return true;}e_curl();

Das obige ist der detaillierte Inhalt vonWie man mit dem Timeout der PHP-Schnittstelle umgeht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn