curl_pause în PHP

cURL și email PHP 5.5+

Pune pe pauză sau reia trimiterea ori primirea datelor într-o cerere cURL aflată în desfășurare.

Sintaxă
curl_pause(CurlHandle $handle, int $flags): int

Ce face curl_pause

curl_pause se apelează din funcțiile callback ale unei cereri active (de exemplu CURLOPT_XFERINFOFUNCTION sau CURLOPT_WRITEFUNCTION). Flag-uri: CURLPAUSE_RECV (oprește primirea), CURLPAUSE_SEND (oprește trimiterea), CURLPAUSE_ALL (ambele) și CURLPAUSE_CONT (reia).

Este o funcție pentru cazuri speciale, de exemplu limitarea vitezei sau așteptarea până când aplicația poate procesa datele.

Parametri

Parametru Descriere
$handle Cererea activă.
$flags CURLPAUSE_RECV, CURLPAUSE_SEND, CURLPAUSE_ALL sau CURLPAUSE_CONT.

Ce returnează

Un cod de eroare cURL: 0 (CURLE_OK) la succes.

Exemple

Exemplul 1: Pauză de o secundă în timpul descărcării

<?php
$ch = curl_init("https://www.dexblog.ro/invata/php/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOPROGRESS, false);

$pauzat = false;
curl_setopt($ch, CURLOPT_XFERINFOFUNCTION, function ($ch, $total, $descarcat) use (&$pauzat) {
    if (!$pauzat && $descarcat > 100000) {
        $pauzat = true;
        echo "Pauză la $descarcat octeți: cod " . curl_pause($ch, CURLPAUSE_RECV) . "\n";
        sleep(1);
        echo "Reluare: cod " . curl_pause($ch, CURLPAUSE_CONT) . "\n";
    }
    return 0;
});

echo "Total: " . strlen(curl_exec($ch)) . " octeți";

Rezultat real (necesită conexiune la internet)

Pauză la 114269 octeți: cod 0
Reluare: cod 0
Total: 581760 octeți

Greșeli frecvente

  • Apelezi curl_pause pe o cerere care nu rulează. Returnează un cod de eroare (43, argument invalid) și nu face nimic.

Comenzi înrudite

  • curl_init / curl_setopt / curl_exec: Pregătește o cerere HTTP către alt server, de exemplu un API. Împreună cu curl_setopt și curl_exec, trimite cererea și primește răspunsul.
  • curl_setopt_array: Setează mai multe opțiuni cURL dintr-o dată, dintr-un tablou. Codul devine mai scurt și mai ușor de citit.