PHP cURL curl_share_errno() Function
The PHP cURL curl_share_errno() function is used to return an integer containing the last share curl error number in addition with curl_share_init() to manage shared cURL handles between multiple cURL requests.
Syntax
Below is the syntax of the PHP cURL curl_share_errno() function −
int curl_share_errno ( resource $sh )
Parameters
This function accepts $sh parameter which is a cURL share handle returned by curl_share_init().
Return Value
The curl_share_errno() function returns an integer representing the last cURL share handle error number. If there were no errors 0 is returned.
PHP Version
First introduced in core PHP 7.1.0, the curl_share_errno() function continues to function easily in PHP 8.
Example 1
Here is the basic example of the PHP cURL curl_share_errno() function to find out if there were any errors related to the cURL share handle.
<?php
// Create a cURL share handle
$share_handle = curl_share_init();
// Perform some cURL operations...
curl_setopt($ch, CURLOPT_URL, 'https://abc123.com');
curl_setopt($ch, CURLOPT_SHARE, $share_handle);
// Check for errors
if (($errno = curl_share_errno($share_handle)) !== 0) {
echo "cURL share error: " . curl_strerror($errno);
}
// Close the cURL share handle
curl_share_close($share_handle);
?>
Output
Here is the outcome of the following code −
cURL share error: URL using bad/illegal format or missing URL
Example 2
In the below PHP code we will try to use the curl_share_errno() function to check errors in a user defined function.
<?php
function perform_curl_request($url) {
$share_handle = curl_share_init();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SHARE, $share_handle);
if (($errno = curl_share_errno($share_handle)) !== 0) {
echo "Error: " . curl_strerror($errno);
}
curl_close($ch);
curl_share_close($share_handle);
}
perform_curl_request('https://abc123.com');
?>
Output
This will generate the below output −
Error: Share handle must be used with multiple easy handles
Example 3
Now the below code we will use the curl_share_errno() function to handle errors in a loop.
<?php
// Array of URLs
$urls = array('https://abc123.com', 'https://abc123.org');
$share_handle = curl_share_init();
foreach ($urls as $url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SHARE, $share_handle);
if (($errno = curl_share_errno($share_handle)) !== 0) {
echo "Error for URL $url: " . curl_strerror($errno);
}
curl_close($ch);
}
curl_share_close($share_handle);
?>
Output
This will create the below output −
Error for URL https://abc123.com: Could not resolve host: abc123.com Error for URL https://abc123.org: SSL certificate problem: unable to get local issuer certificate