好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

phpcurl怎么执行 php调用url

很多站长朋友们都不太清楚phpcurl怎么执行,今天小编就来给大家整理phpcurl怎么执行,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 php curl的几种用法 2、 php curl用法 3、 PHP_CURL使用详解 4、 curl命令在PHP中怎么用 5、 解析php中curl php curl的几种用法

总结一下项目中用到curl的几种方式 1. php curl的默认调用方法,get方式访问url $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //设置http头 curl_setopt($ch, CURLOPT_ENCODING, "gzip" ); //设置为客户端支持gzip压缩 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30 ); //设置连接等待时间 curl_setopt($ch, CURLOPT_URL, $url ); curl_exec( $ch ); if ($error = curl_error($ch) ) {//出错处理return -1;}fclose($fp); $curl_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //获取http返回值 if( $curl_code == 200 ) { //正常访问url}//异常 2. 设置http header支持curl访问lighttpd服务器Java代码$header[]= 'Expect:'; $header[]= 'Expect:'; 3. 设置curl,只获取http header,不获取body:Java代码curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_NOBODY, 1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_NOBODY, 1); 或者只获取body:Java代码curl_setopt($ch, CURLOPT_HEADER, 0); // make sure we get the body curl_setopt($ch, CURLOPT_NOBODY, 0); curl_setopt($ch, CURLOPT_HEADER, 0); // make sure we get the body curl_setopt($ch, CURLOPT_NOBODY, 0); 4. 访问虚拟主机,需设置Host $header[]= 'Host: '.$host; 5. 使用post, put, delete等REStful方式访问urlpost:curl_setopt($ch, CURLOPT_POST, 1 ); put, delete: curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); //或者PUT,需要服务器支持这些方法。6. 保存下载内容为文件

php curl用法

curl 是使用URL语法的传送文件工具,支持FTP、FTPS、HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP。curl 支持SSL证书、HTTP POST、HTTP PUT 、FTP 上传,kerberos、基于HTT格式的上传、代理、cookie、用户+口令证明、文件传送恢复、http代理通道和大量其他有用的技巧。

PHP_CURL使用详解

CURL是PHP的一个扩展,利用该扩展可以实现服务器之间的数据或文件传输,用来采集网络中的html网页文件、其他服务器提供接口数据等。

GET请求

POST请求

curl命令在PHP中怎么用

这是我项目中一直在用的一个方法

<?php

function curl($url,$params = array(),$header = array(),$timeout = 180){

    if(empty($url)) return $url;

    $curl = curl_init();

    curl_setopt($curl, CURLOPT_URL,$url);//请求url地址

    curl_setopt($curl, CURLOPT_HTTPHEADER , $header );  //构造IP

    

    if(!empty($params)  count($params) > 0){

        curl_setopt($curl, CURLOPT_POST, true);

        

        //Request Payload格式数据

        if(isset($params['is_json'])  $params['is_json'] === true){

            unset($params['is_json']);

            $params = json_encode($params);

        }else{

            $params = http_build_query($params);

        }

        curl_setopt($curl, CURLOPT_POSTFIELDS, $params);        

    }

    //curl_setopt($curl, CURLOPT_HEADER, true);//是否返回响应头信息

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//是否将结果返回

    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);//是否重定向

    //curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36');

    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);   // 只信任CA颁布的证书  

    //curl_setopt($curl, CURLOPT_CAINFO, $cacert); // CA根证书(用来验证的网站证书是否是CA颁布)  

    //curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 检查证书中是否设置域名,并且是否与提供的主机名匹配  

    // 从证书中检查SSL加密算法是否存在

    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);

    curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); 

    //curl_setopt($curl, CURLOPT_HTTPHEADER, array("Expect: ")); 

    curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );

    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);//用来告诉PHP脚本在成功连接服务器前等待多久(连接成功之后就会开始缓冲输出),这个参数是为了应对目标服务器的过载,下线,或者崩溃等可能状况;

    curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);//用来告诉成功PHP脚本,从服务器接收缓冲完成前需要等待多长时间。如果目标是个巨大的文件,生成内容速度过慢或者链路速度过慢,这个参数就会很有用。

    // 自动设置Referer

    curl_setopt($curl, CURLOPT_AUTOREFERER, 1);

    //curl_setopt($curl, CURLOPT_COOKIEJAR, "D:phpStudyWWWcjcooBE66.tmp");// //写入cookie信息

    //setcookie('cookie_jar', $cookie_jar); //保存cookie路径

    $data = curl_exec($curl); //执行    

    curl_close($curl);

    return $data;

}

?>

解析php中curl

php的multi_curl功能慎用 因为某些版本的curl和php的搭配有Bug 所以你调试过没问题的代码很可能在别的机器上不正确  

相信许多人对php手册中语焉不详的curl_multi一族的函数头疼不已 它们文档少 给的例子 更是简单的让你无从借鉴 我也曾经找了许多网页 都没见一个完整的应用例子 •curl_multi_add_handle •curl_multi_close •curl_multi_exec •curl_multi_getcontent •curl_multi_info_read •curl_multi_init •curl_multi_remove_handle •curl_multi_select 一般来说 想到要用这些函数时 目的显然应该是要同时请求多个url 而不是一个一个依次请求 否则不如自己循环去调curl_exec好了

步骤总结如下 第一步 调用curl_multi_init 第二步 循环调用curl_multi_add_handle 这一步需要注意的是 curl_multi_add_handle的第二个参数是由curl_init而来的子handle 第三步 持续调用curl_multi_exec 第四步 根据需要循环调用curl_multi_getcontent获取结果 第五步 调用curl_multi_remove_handle 并为每个字handle调用curl_close 第六步 调用curl_multi_close 这里有一个网上找的简单例子 其作者称为dirty的例子 (稍后我会说明为何dirty)

复制代码 代码如下: * Here s a quick and dirty example for curl multi from PHP tested on PHP RC CLI / FreeBSD */

$connomains = array( " " " );

$mh = curl_multi_init();

foreach ($connomains as $i => $url) {      $conn[$i]=curl_init($url);       curl_setopt($conn[$i] CURLOPT_RETURNTRANSFER );       curl_multi_add_handle ($mh $conn[$i]); }

do { $n=curl_multi_exec($mh $active); } while ($active);

foreach ($connomains as $i => $url) {       $res[$i]=curl_multi_getcontent($conn[$i]);       curl_close($conn[$i]); }

print_r($res);

整个使用过程差不多就是这样 但是 这个简单代码有个致命弱点 就是在do循环的那段 在整个url请求期间是个死循环 它会轻易导致CPU占用 % 现在我们来改进它 这里要用到一个几乎没有任何文档的函数curl_multi_select了 虽然C的curl库对select有说明 但是 php里的接口和用法确与C中有不同 把上面do的那段改成下面这样

复制代码 代码如下: do {                         $mrc = curl_multi_exec($mh $active);                 } while ($mrc == CURLM_CALL_MULTI_PERFORM);                 while ($active and $mrc == CURLM_OK) {                         if (curl_multi_select($mh) != ) {                                 do {                                         $mrc = curl_multi_exec($mh $active);                                 } while ($mrc == CURLM_CALL_MULTI_PERFORM);                         }                 }

因 为$active要等全部url数据接受完毕才变成false 所以这里用到了curl_multi_exec的返回值判断是否还有数据 当有数据的时候 就不停调用curl_multi_exec 暂时没有数据就进入select阶段 新数据一来就可以被唤醒继续执行 这里的好处就是CPU的无谓消耗没有 了

另外 还有一些细节的地方可能有时候要遇到 控制每一个请求的超时时间 在curl_multi_add_handle之前通过curl_setopt去做 curl_setopt($ch CURLOPT_TIMEOUT $timeout);

判断是否超时了或者其他错误 在curl_multi_getcontent之前用 curl_error($conn[$i]);

lishixinzhi/Article/program/PHP/201311/21124

关于phpcurl怎么执行的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于phpcurl怎么执行 php调用url的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did208567
更新时间:2023-05-03   阅读:15次

上一篇: phppost分页代码 php实现分页显示

下一篇:php中编写时间 php时间代码

最新资料更新

  • 1.网页php查看源代码 php怎么看源码
  • 2.php毫秒间隔 php时间距离现在
  • 3.php截取汉子 php 截断
  • 4.php怎么登录会员 怎么用php完成登录页面
  • 5.php获取阴历 php获取日期
  • 6.php保存url数据 php获取url参数
  • 7.php缓存框架 php 缓存
  • 8.php编写确认密码 php用户名密码
  • 9.JavaPHP你好 java welcome
  • 10.php项目详解 php项目总结
  • 11.php单个会话内存 php会话保存数据的两种方式是
  • 12.修改php网页链接 怎么修改php网页
  • 13.php用户检索记录系统 php搜索数据库
  • 14.如何知道php密码 php确认密码
  • 15.包含peintphp的词条
  • 16.关于php2esgbi的信息
  • 17.php获取url# php获取url id
  • 18.php美国东部时间 美国东部时间 换算
  • 19.php限制访问ip php访问被拒绝
  • 20.bashphp的简单介绍

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]