curl_share_setopt()

1. 定义

该函数为curl共享句柄设置可共享或不可共享的数据项。 成功时返回TRUE,失败则返回FALSE。

2. 语法

curl_share_setopt ( resource $sh , int $option , string $value ) : bool

3. 参数说明

参数 可选性 数据类型 描述
$sh 必需 资源类型 通过函数curl_share_init()打开的curl共享句柄
$option 必需 整型 指定要共享或不再共享的数据类型,共享:CURLSHOPT_SHARE;不再共享:CURLSHOPT_UNSHARE
$value 必需 字符串 指定要共享或不再共享的数据

其中,$value有以下几种可选值:

  • CURL_LOCK_DATA_COOKIE:共享 cookie 数据
  • CURL_LOCK_DATA_DNS:共享 DNS 缓存
  • CURL_LOCK_DATA_SSL_SESSION:共享 SSL 的 session ID。在重连同样的服务器时将减少SSL握手时间。

4. 示例

<?php

// curl_share_setopt()
// 为curl共享句柄设置可共享或不可共享的数据项

$sh = curl_share_init();// 新建一个共享句柄
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);// 为共享句柄设置选项,这里设置共享 cookie 数据

$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, 'http://loripsum.net/api/5/short/headers');
curl_setopt($ch1, CURLOPT_SHARE, $sh);// 将该句柄设置到共享句柄`$sh`中,使该句柄可以处理`$sh`中共享的数据

$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, 'http://loripsum.net/api/2/short/a/b/i');
curl_setopt($ch2, CURLOPT_SHARE, $sh);// 将该句柄设置到共享句柄`$sh`中,使该句柄可以处理`$sh`中共享的数据

// 此时执行第二个curl句柄,它可以使用 第一个curl句柄中存在的 cookie
curl_exec($ch2);

// 关闭共享句柄,此时 $ch1 和 $ch2 不能共享数据了
curl_share_close($sh);

// 关闭curl句柄
curl_close($ch1);
curl_close($ch2);