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 −
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 −
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 −