资讯专栏INFORMATION COLUMN

PHP使用CURL详解

yedf / 1082人阅读

摘要:使用详解是一个非常强大的开源库,支持很多协议,包括等,我们使用它来发送请求。它给我们带来的好处是可以通过灵活的选项设置不同的协议参数,并且支持。可以根据前缀是还是自动选择是否加密发送内容。传输前准备耗时。上传内容的长度。

PHP使用CURL详解


Curl是一个非常强大的开源库,支持很多协议,包括HTTP、FTP、TELNET等,我们使用它来发送HTTP请求。它给我 们带来的好处是可以通过灵活的选项设置不同的HTTP协议参数,并且支持HTTPS。CURL可以根据URL前缀是“HTTP” 还是“HTTPS”自动选择是否加密发送内容。

使用方法

使用CURL的PHP扩展完成一个PHP的请求,一般分为四个步骤:

初始化Curl连接句柄

设置属性选项

执行获取结果,处理异常

关闭Curl连接句柄

实例
/*get请求*/
function curlGet($url) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    if (($tmp = curl_exec($ch)) === false) {
        return false;
    }
    curl_close($ch);
    return $tmp;
}

/*post请求*/
function curlPost($url, $params) {
    $ssl = substr($url, 0, 8) == "https://" ? TRUE : FALSE;
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER,FALSE);
    curl_setopt($ch, CURLOPT_NOBODY, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
    curl_setopt($ch, CURLOPT_TIMEOUT, 120);
    curl_setopt($ch, CURLOPT_POST,TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
    if ($ssl){
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); // 检查证书中是否设置域名
    }
    if (($returnData = curl_exec($ch)) === false) {
        return false;
    }
    curl_close($ch);
    return $returnData;
}

说明:

通过curl_init($url);初始化连句柄,也可以通过选项设置curl_setopt($ch, CURLOPT_URL, $url);参数为请求的地址

通过curl_setopt()设置连接的选项,CURLOPT_RETURNTRANSFER 设置为1表示稍后执行的curl_exec函数的返回是URL的返回字符串,而不是把返回字符串定向到标准输出并返回TRUE;其他选项设置参考http://www.php.net/manual/en/...

($tmp = curl_exec($ch)获取请求结果

curl_close($ch)释放连接

获取CURL的请求输出参数

在curl_exec()函数执行之后,可以使用curl_getinfo()函数获取CURL请求输出的相关信息,示例代码如下:

curl_exec($ch);
$info = curl_getinfo($sh);

curl_getinfo()输出是一个数组,包含以下数据:

url:网络地址。

content_type:内容编码。

http_code:HTTP状态码。

header_size:header的大小。

request_size:请求的大小。

filetime:文件创建的时间。

ssl_verify_result:SSL验证结果。

redirect_count:跳转计数。

total_time:总耗时。

namelookup_time:DNS查询耗时。

connect_time:等待连接耗时。

pretransfer_time:传输前准备耗时。

size_uplpad:上传数据的大小。

size_download:下载数据的大小。

speed_download:下载速度。

speed_upload:上传速度。

download_content_length:下载内容的长度。

upload_content_length:上传内容的长度。

starttransfer_time:开始传输的时间表。

redirect_time:重定向耗时。

curl_getinfo()函数还有一个可选择参数$opt,通过这个参数可以设置一些常量,对应到上术这个字段,如果设置了第二个参数,那么返回的只有指定的信息。例如设置$opt为CURLINFO_TOTAL_TIME,则curl_getinfo()函数只返回total_time,即总传输消耗的时间

参考:

http://www.php.net/manual/zh/...

http://www.cnblogs.com/manong...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22383.html

相关文章

  • PHP cURL请求详解

    摘要:不支持多进程,如果需要异步请求,非阻塞的方式,请选择。时会发送请求,类型为,是表单提交时最常见的一种。允许函数执行的最长秒数。设定请求中部分的内容。常规的使用来请求,功能强大,使用方便,按需配置。 在PHP后端的开发过程中,除了获取数据库的数据和处理数据的内部逻辑,往往还需要请求其他服务器接口的数据,我们一般有3种方式来获取数据,分别是: file_get_contents fsoc...

    paney129 评论0 收藏0
  • [转]详解PHP设置定时任务的实现方法

    摘要:服务器定时任务服务器定时任务需要你是独立的服务器,或者是,总之就是对系统的配置有足够的权限,虚拟空间就不要折腾这个方法了,因为你没有权限。 文章转载自:问说网 » 详解PHP设置定时任务的实现方法地址:http://www.uedsc.com/php-timing-task.html 定时运行任务对于一个网站来说,是一个比较重要的任务,比如定时发布文档,定时清理垃圾信息等,现在的网站大...

    lemon 评论0 收藏0
  • PHP编译参数configure配置详解(持续更新中)

    摘要:编译参数使用在源代码目录中,该命令可以查看所有编译参数以及对应的英文解释编译参数说明指定安装目录整合指定位置指定额外拓展配置归放处文件夹打开安全模式打开的支持打开对的支持打开对 编译参数-使用 ./configure -h在源代码目录中,该命令可以查看所有编译参数以及对应的英文解释 编译参数-说明 --prefix=/opt/php //指定 ...

    hlcc 评论0 收藏0
  • PHP编译参数configure配置详解(持续更新中)

    摘要:编译参数使用在源代码目录中,该命令可以查看所有编译参数以及对应的英文解释编译参数说明指定安装目录整合指定位置指定额外拓展配置归放处文件夹打开安全模式打开的支持打开对的支持打开对 编译参数-使用 ./configure -h在源代码目录中,该命令可以查看所有编译参数以及对应的英文解释 编译参数-说明 --prefix=/opt/php //指定 ...

    Lyux 评论0 收藏0
  • PHP实现并发请求

    摘要:不支持多线程模式和回调处理,因此内部脚本都是同步阻塞式的,如果你发起一个的请求,那么程序就会阻塞,直到请求返回结果,才会继续执行代码。参考资料手册手册预定义常量中实现多线程请求详解每次使用同时并发多少请求合适简书多线程及原理 后端服务开发中经常会有并发请求的需求,比如你需要获取10家供应商的带宽数据(每个都提供不同的url),然后返回一个整合后的数据,你会怎么做呢? 在PHP中,最直观...

    zhangfaliang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<