欢迎访问宙启技术站
智能推送

PHPCURL函数:10个实例及用法详解

发布时间:2023-06-09 02:05:29

一、什么是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请求的必备工具,希望本文能够对你有所帮助。