PHP cURL curl_pause() Function



The PHP cURL curl_pause() function is used to pause or unpause a connection or cURL session. To pause a session at the time of a transfer that is happening in either the read, write, or both directions, this function can be used from a callback that has been registered with curl_setopt().

Syntax

Below is the syntax of the PHP cURL curl_pause() function −

int curl_pause (resource $ch, int $flags)

Parameters

Below are the parameters of the curl_pause() function −

  • $ch − It is the cURL handle returned by curl_init().

  • $flags − It is an integer CURLPAUSE_* constants that shows which connections should be suspended and which ones should not.

CURLPAUSE_* Constants

The available constants are as follows:

  • CURLPAUSE_RECV: Pause receiving data.
  • CURLPAUSE_RECV_CONT: Unpause receiving data.
  • CURLPAUSE_SEND: Pause sending data.
  • CURLPAUSE_SEND_CONT: Unpause sending data.
  • CURLPAUSE_ALL: Pause both receiving and sending data.
  • CURLPAUSE_CONT: Unpause both receiving and sending data.

Return Value

The curl_pause() function returns 0 (CURLE_OK) on success and cURL error code on failure.

PHP Version

First introduced in core PHP 5.5.0, the curl_pause() function continues to function easily in PHP 7, and PHP 8.

Example 1

Here is the basic example of the PHP cURL curl_pause() function to pause and unpause the receiving data. And we have used CURLPAUSE_RECV constant to pause the receiving data.

<?php
   $ch = curl_init("http://abc123.com");
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

   // Start the transfer
   curl_exec($ch);

   // Pause receiving data
   curl_pause($ch, CURLPAUSE_RECV);
    
   // Pause receiving data
   curl_pause($ch, CURLPAUSE_RECV);
   echo "The curl_pause() function has paused receiving data!\n";
   
   // Unpause receiving data
   curl_pause($ch, CURLPAUSE_RECV_CONT);
   
   echo "The curl_pause() function has unpaused receiving data!";

   curl_close($ch);
?>

Output

Here is the outcome of the following code −

The curl_pause() function has paused receiving data!
The curl_pause() function has unpaused receiving data!

Example 2

In the below PHP code we will use the curl_pause() function with CURLPAUSE_ALL constant to pause both the sending and receiving data.

<?php
   // Create a cURL handle
   $ch = curl_init("http://example.com");
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

   // Start the transfer 
   $output = curl_exec($ch);

   // Pause both sending and receiving data
   curl_pause($ch, CURLPAUSE_ALL);

   // Simulate some processing or delay
   sleep(2); 

   // Unpause both sending and receiving data
   curl_pause($ch, CURLPAUSE_CONT);

   curl_close($ch);

   // Print the output
   echo $output;

?> 

Output

It will display the Content of the Provided URL −

curl_pause Output

Example 3

Now we will use the curl_pause() function with CURLPAUSE_SEND constant to pause only sending data for 4 seconds.

<?php
   // Create the cURL handle
   $ch = curl_init("http://abc123.com");
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

   // Start the transfer and store the result
   $output = curl_exec($ch);

   // Pause sending data
   curl_pause($ch, CURLPAUSE_SEND);

   // Simulate some processing or delay
   sleep(4); 

   // Unpause sending data
   curl_pause($ch, CURLPAUSE_SEND_CONT);

   curl_close($ch);

   // Print the output
   echo $output;
?> 

Output

Here the content of the provided URL will be displayed −

curl_pause Output

Example 4

Now use curl_pause() function with CURLPAUSE_RECV and CURLPAUSE_RECV_CONT to pause and unpause the receiving data and also we will provide conditional logic here.

<?php
   // Create the cURL handle
   $ch = curl_init("http://example.com");
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

   // Start the transfer and store the result
   $output = curl_exec($ch);

   // Check some condition before pausing
   if (strlen($output) > 1000) {
      // Pause receiving data if the output length is greater than 1000 characters
      curl_pause($ch, CURLPAUSE_RECV);

      // Simulate some processing or delay
      sleep(5); 

      // Unpause receiving data
      curl_pause($ch, CURLPAUSE_RECV_CONT);
   }

   curl_close($ch);

   // Print the output
   echo $output;
?> 

Output

It will also display the content of the URL after pausing for 5 seconds −

curl_pause Output
php_function_reference.htm
Advertisements