curl_share_init_persistent

Initialize a persistent cURL share handle

&reftitle.description; `CurlSharePersistentHandle` `curl_share_init_persistent` `array` `share_options`

Initialize a persistent cURL share handle with the given share options. Unlike `curl_share_init`, handles created by this function will not be destroyed at the end of the PHP request. If a persistent share handle with the same set of `share_options` is found, it will be reused.

&reftitle.parameters;

`share_options`

- A non-empty array of `CURL_LOCK_DATA_`*`` constants.

  `CURL_LOCK_DATA_COOKIE` is not allowed and, if specified, this function will throw a ValueError. Sharing cookies between PHP requests may lead to inadvertently mixing up sensitive cookies between users.

&reftitle.returnvalues;

Returns a `CurlSharePersistentHandle`.

&reftitle.errors;

- If `share_options` is empty, this function throws a ValueError.

- If `share_options` contains a value not matching a `CURL_LOCK_DATA_`*``, this function throws a `ValueError`.

- If `share_options` contains `CURL_LOCK_DATA_COOKIE`, this function throws a ValueError.

- If `share_options` contains a non-integer value, this function throws a TypeError.

&reftitle.examples;

### `curl_share_init_persistent` example

This example will create a persistent cURL share handle and demonstrate sharing connections between them. If this is executed in a long-lived PHP SAPI, `$sh` will survive between SAPI requests.

    <?php

    // Create or retrieve a persistent cURL share handle set to share DNS lookups and connections
    $sh = curl_share_init_persistent([CURL_LOCK_DATA_DNS, CURL_LOCK_DATA_CONNECT]);

    // Initialize the first cURL handle and assign the share handle to it
    $ch1 = curl_init("http://example.com/");
    curl_setopt($ch1, CURLOPT_SHARE, $sh);

    // Execute the first cURL handle. This may reuse the connection from an earlier SAPI request
    curl_exec($ch1);

    // Initialize the second cURL handle and assign the share handle to it
    $ch2 = curl_init("http://example.com/");
    curl_setopt($ch2, CURLOPT_SHARE, $sh);

    // Execute the second cURL handle. This will reuse the connection from $ch1
    curl_exec($ch2);

    ?>

&reftitle.seealso;

- `curl_setopt`
- `curl_share_init`