Current Location: Home> Latest Articles> Curl_share_init() function detailed explanation: The correct way to initialize a shared cURL handle

Curl_share_init() function detailed explanation: The correct way to initialize a shared cURL handle

M66 2025-05-19

In PHP, cURL is a powerful library that allows us to send HTTP requests and get responses. The curl_share_init() function is a mechanism provided by cURL to initialize a shared cURL handle. Share a cURL handle, multiple cURL sessions can share some configuration options and data, which can reduce memory consumption and improve the efficiency of multiple cURL sessions.

1. What is a shared cURL handle?

A cURL Shared Handle is a handle that shares information between multiple cURL sessions. By using a shared handle, we can let different cURL sessions share some state information (such as cookies or DNS caches). This is very helpful for efficiently managing multiple cURL requests, especially when handling situations where frequent access to the same website is required.

2. Initialize the shared cURL handle using curl_share_init()

The curl_share_init() function is used to initialize a shared handle. This function does not require any parameters and returns a shared handle resource.

 $ch_share = curl_share_init();

3. Set options for sharing resources

After initializing the shared handle, we can use the curl_share_setopt() function to set options for the shared handle. These options can be shared cookies, DNS caches, etc. We use the CURLSHOPT_* constant to set the sharing options.

For example, the following code demonstrates how to set a shared cookie:

 curl_share_setopt($ch_share, CURLSHOPT_COOKIE, true);

4. Share in multiple cURL sessions

After initializing and setting up a shared handle, we can pass the shared handle to each cURL session. This makes these cURL sessions share the same resource. The following code example shows how to share a shared handle between multiple cURL sessions.

 $ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "https://m66.net/some-path");
curl_setopt($ch1, CURLOPT_SHARE, $ch_share);

$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "https://m66.net/another-path");
curl_setopt($ch2, CURLOPT_SHARE, $ch_share);

// Perform multiple requests
curl_exec($ch1);
curl_exec($ch2);

5. Close the shared handle

After using the shared handle, we need to close the shared handle to free up the resource. Use the curl_share_close() function to close the shared handle.

 curl_share_close($ch_share);

6. Sample complete code

Here is a complete example that demonstrates how to initialize a shared handle using curl_share_init() and share it between multiple cURL requests.