Current Location: Home> Latest Articles> How to build a shared session using curl_share_init() and curl_init()? Detailed step analysis

How to build a shared session using curl_share_init() and curl_init()? Detailed step analysis

M66 2025-05-23

In PHP, cURL is a very powerful tool that can be used to make various network requests. curl_init() is a function used to initialize a cURL session, while curl_share_init() is used to initialize a shared session. Through these two functions, we can implement different session sharing and data exchange, thereby improving efficiency.

This article will analyze in detail how to use these two functions to help you build a shared session.

1. What is a shared session?

Shared sessions enable multiple cURL sessions to share certain settings, such as cookies, DNS resolution caches, etc. When making multiple requests, avoid duplicate settings of network connections, authentication information, header information, etc., thereby optimizing performance and resource usage.

2. Basic functions of curl_share_init() and curl_init()

  • curl_init() : Initializes a new cURL session and returns a cURL handle. With this handle, we can configure and execute HTTP requests.

  • curl_share_init() : Initialize a shared session handle, allowing multiple cURL sessions to share settings. You can set shared content, such as cookies, DNS, SSL sessions, etc.

3. Steps to build a shared session

Step 1: Initialize the shared session

First, we need to create a shared session handle using curl_share_init() .

 $share = curl_share_init();

Step 2: Set sharing options

After the shared session handle is created, we can set the options we need to share. Common sharing options include:

  • CURLSHOPT_COOKIE : Share cookies.

  • CURLSHOPT_DNS : Shared DNS cache.

  • CURLSHOPT_SSL : Share an SSL session.

For example, set shared cookies:

 curl_share_setopt($share, CURLSHOPT_COOKIE, true);

Step 3: Initialize the cURL session

Then, we initialize the cURL session handle using curl_init() . The session here is associated with a shared session, allowing for sharing settings.

 $ch = curl_init();

Step 4: Set cURL options

Set the necessary options for the cURL session. For example, set URLs and return results, etc.

 curl_setopt($ch, CURLOPT_URL, "http://m66.net/api/endpoint");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SHARE, $share);  // Shared conversation

Step 5: Execute the request

Execute HTTP request via curl_exec() and get the result.

 $response = curl_exec($ch);
if ($response === false) {
    echo "cURL Error: " . curl_error($ch);
}

Step 6: Close the session

After the request is complete, we need to close the cURL session and the shared session.

 curl_close($ch);
curl_share_close($share);

4. Complete code example

 <?php

// 初始化Shared conversation
$share = curl_share_init();
curl_share_setopt($share, CURLSHOPT_COOKIE, true);

// Initialize the first one cURL Session
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "http://m66.net/api/endpoint1");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_SHARE, $share);
$response1 = curl_exec($ch1);
if ($response1 === false) {
    echo "cURL Error: " . curl_error($ch1);
}
curl_close($ch1);

// Initialize the second cURL Session
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "http://m66.net/api/endpoint2");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_SHARE, $share);
$response2 = curl_exec($ch2);
if ($response2 === false) {
    echo "cURL Error: " . curl_error($ch2);
}
curl_close($ch2);

// 关闭Shared conversation
curl_share_close($share);
?>

5. Things to note

  • Make sure there is no other operational interference between curl_share_init() and curl_share_setopt() .

  • Shared sessions should be closed after all cURL sessions have completed.

  • If you want the settings for sharing sessions when executing multiple requests, make sure that each request is passed in the same shared handle.

6. Summary

By using curl_share_init() and curl_init() we can share data and settings across multiple cURL sessions, optimizing performance and reducing redundant request configurations. Shared sessions will greatly improve efficiency when making high-frequency requests, especially in scenarios involving cookies and DNS caches.

Hopefully this article can help you better understand how to use cURL in PHP to build shared sessions and improve the performance of your code.