函数名称:curl_copy_handle()
适用版本:PHP 5.5.0及以上版本
用法:curl_copy_handle()函数用于创建一个现有CURL会话的副本,包括所有选项和句柄状态。这对于需要多次执行相同的HTTP请求非常有用。
语法:resource curl_copy_handle(resource $ch)
参数:
- $ch:现有CURL会话句柄
返回值:返回创建的CURL会话副本的句柄,如果失败则返回FALSE。
示例:
// 创建一个CURL会话
$ch = curl_init('https://www.example.com/api');
// 设置CURL选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['name' => 'John', 'email' => 'john@example.com']));
// 执行第一次请求
$response1 = curl_exec($ch);
// 创建CURL会话的副本
$chCopy = curl_copy_handle($ch);
// 设置副本的CURL选项
curl_setopt($chCopy, CURLOPT_POSTFIELDS, json_encode(['name' => 'Jane', 'email' => 'jane@example.com']));
// 执行副本的请求
$response2 = curl_exec($chCopy);
// 关闭CURL会话及副本
curl_close($ch);
curl_close($chCopy);
// 输出结果
echo "Response 1: $response1\n";
echo "Response 2: $response2\n";
在上面的示例中,首先通过curl_init()
创建一个CURL会话,并使用curl_setopt()
设置相关选项。然后使用curl_exec()
执行第一次请求并保存结果。接下来,使用curl_copy_handle()
创建CURL会话的副本,并使用curl_setopt()
设置副本的其他选项。然后再次使用curl_exec()
执行副本的请求并保存结果。最后使用curl_close()
关闭原始CURL会话及副本。最终将两次请求的结果输出到屏幕上。
注意:副本会继承原始会话的所有选项和状态,但副本和原始会话是相互独立的,它们可以独立地设置和执行不同的HTTP请求。