PHPCURL函数:10个实例及用法详解
一、什么是CURL
CURL是一个开源的用于发送和接收各种协议特别是HTTP的开源库,支持多种平台,多种语言,包括C、C++、Java、JavaScript、Perl、PHP等。CURL通常使用libcurl实现,libcurl是一个用C语言编写的库,拥有简便的API,提供多种传输协议的支持。
CURL可以通过PHP的CURL扩展函数来调用,PHP中的CURL函数扩展是一个用PHP实现的API,它提供与CURL库交互的接口,使PHP能够在不离开语言的情况下完成CURL库的所有操作。
二、PHPCURL函数
PHP中提供了很多CURL函数,在这里我们将介绍10个常用的CURL函数,分别是:
1、curl_init
功能:初始化一个curl会话,并返回一个句柄,用于后续的curl操作。
语法:resource curl_init ([ string $url = NULL ] )
参数:url 可选,要访问的URL,默认为NULL。
例子:
$curl = curl_init(); // 初始化一个curl对象 curl_setopt($curl, CURLOPT_URL, "http://www.example.com/"); // 设置要访问的URL curl_exec($curl); // 请求URL curl_close($curl); // 关闭curl链接
2、curl_setopt
功能:设置一个curl会话的选项,比如发送请求的URL、HTTP头、发送请求的数据等。
语法:bool curl_setopt ( resource $ch , int $option , mixed $value )
参数:
$ch:curl_init()函数返回的curl句柄;
$option:设置选项,可以是下面官方文档列举的32个选项之一,或者其他整数值;
$value:设置选项的值,可以是字符串、整数、布尔值等。
例子:
$curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://www.example.com/"); // 设置要访问的URL curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // 返回响应结果的数据流而不是直接输出 curl_setopt($curl, CURLOPT_POST, true); // 发送一个POST请求 curl_setopt($curl, CURLOPT_POSTFIELDS, "username=admin&password=123456"); // 设置请求参数 curl_exec($curl); curl_close($curl);
另外,curl_setopt也可以设置更多的选项,具体选项参数和取值可以参考官方文档。
3、curl_exec
功能:执行一个CURL会话,返回执行的结果。
语法:mixed curl_exec ( resource $ch )
参数:$ch为curl_init()函数返回的curl句柄。
例子:
$curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://www.example.com/"); // 设置要访问的URL curl_exec($curl); curl_close($curl);
4、curl_close
功能:关闭一个curl会话资源。
语法:void curl_close ( resource $ch )
参数:$ch为curl_init()函数返回的curl句柄。
例子:
$curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "http://www.example.com/"); // 设置要访问的URL curl_close($curl);
5、curl_errno
功能:返回最后一次curl操作的错误代码。
语法:int curl_errno ( resource $ch )
参数:$ch为curl_init()函数返回的curl句柄。
例子:
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://www.example.com/"); // 设置要访问的URL
curl_exec($curl);
if(curl_errno($curl)) {
echo 'Curl error: ' . curl_error($curl);
}
curl_close($curl);
6、curl_error
功能:返回最后一次curl操作的错误信息。
语法:string curl_error ( resource $ch )
参数:$ch为curl_init()函数返回的curl句柄。
例子:
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "http://www.example.com/"); // 设置要访问的URL
curl_exec($curl);
if(curl_errno($curl)) {
echo 'Curl error: ' . curl_error($curl);
}
curl_close($curl);
7、curl_getinfo
功能: 获取CURL相关的参数信息,包括请求URL、HTTP响应代码、交互时间等。
语法:mixed curl_getinfo ( resource $ch [, int $opt ] )
参数:
$ch:curl_init()函数返回的curl句柄;
$opt:一个小于等于32的整数,表示需要获取的信息。
例子:
$curl = curl_init(); $url = "http://www.example.com/"; curl_setopt($curl, CURLOPT_URL, $url); // 设置要访问的URL curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // 返回响应结果的数据流而不是直接输出 curl_exec($curl); $info = curl_getinfo($curl); echo '请求的URL:' . $info['url'] . '<br />'; echo 'HTTP状态码:' . $info['http_code'] . '<br />'; echo '请求总时间:' . $info['total_time'] . '秒<br />'; curl_close($curl);
8、curl_multi_init
功能:返回一个新的cURL多个句柄的对象,可同时处理多个cURL句柄。
语法:resource curl_multi_init ( void )
例子:
$curl_arr = array();
$curl_multi = curl_multi_init();
for($i = 0; $i < 10; $i++) {
$url = 'http://www.example.com/';
$curl_arr[$i] = curl_init($url);
curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($curl_multi, $curl_arr[$i]);
}
$active = null;
do {
$stat = curl_multi_exec($curl_multi, $active);
} while ($stat === CURLM_CALL_MULTI_PERFORM || $active);
foreach($curl_arr as $i => $curl) {
$results[$i] = curl_multi_getcontent($curl);
curl_multi_remove_handle($curl_multi, $curl);
}
curl_multi_close($curl_multi);
var_dump($results);
9、curl_multi_add_handle
功能:添加一个新的curl句柄到一个curl批处理会话中。
语法:integer curl_multi_add_handle ( resource $mh , resource $ch )
参数:
$mh:处理curl批处理句柄;
$ch:将要添加的curl句柄。
10、curl_multi_exec
功能: 处理批处理句柄中的每一个句柄的链接请求。
语法:int curl_multi_exec ( resource $mh , int &$still_running )
参数:
$mh:处理curl批处理句柄;
$still_running:传入一个变量引用,表示当前仍然在运行的curl句柄数目。
例子:
do {
$stat = curl_multi_exec($curl_multi, $active);
} while ($stat === CURLM_CALL_MULTI_PERFORM || $active);
以上就是10个PHPCURL函数的详细介绍,包括语法、参数传递等内容,这些函数是使用CURL库进行HTTP请求的必备工具,希望本文能够对你有所帮助。
