【捷哥浅谈PHP】第十六弹---文件传输工具cURL的高级应用
来源:互联网 发布:知乎手机无法登录 编辑:程序博客网 时间:2024/06/04 18:02
我们接着上文的内容来讲,上文给大家简单介绍了下使用curl的四个步骤,本文来给大家讲解下curl的一些高级应用:
获取请求的相关信息,我们可以在curl执行完成后利用curl_getinfo(): 再新建一个页面,用来模拟浏览器发送POST数据:
upload.php
上传需要注意的是,要上传的文件名之前要加上@符号!
cURL批处理:
cURL还有一个高级应用,批处理句柄,这个特性可以同步或异步地处理多个URL连接:
$running会收集来自http://www.li-jie.me和http://www.lampbrother.net的页面内容,实现多个URL的批量处理!
大家看到了吧,以后采集网站摒弃file_get_contents和fopen吧,把我们强大的cURL用起来,会帮你的web应用增色不少!
原文地址:http://bbs.lampbrother.net/read-htm-tid-121356.html
获取请求的相关信息,我们可以在curl执行完成后利用curl_getinfo():
- <?php
- // 创建一个新cURL资源
- $ch = curl_init("http://www.lampbrother.net");
- // 设置URL和相应的选项
- curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
- // 检查是否有错误发生
- if(!curl_errno($ch))
- {
- $info = curl_getinfo($ch);
- var_dump($info);
- }
- // 抓取URL并把它传递给浏览器
- $html = curl_exec($ch);
- // 关闭cURL资源,并且释放系统资源
- curl_close($ch);
- ?>
打印出来的内容为:
array
'url' => string 'http://www.lampbrother.net' (length=26)
'content_type' => null
'http_code' => int 0
'header_size' => int 0
'request_size' => int 0
'filetime' => int 0
'ssl_verify_result' => int 0
'redirect_count' => int 0
'total_time' => float 0
'namelookup_time' => float 0
'connect_time' => float 0
'pretransfer_time' => float 0
'size_upload' => float 0
'size_download' => float 0
'speed_download' => float 0
'speed_upload' => float 0
'download_content_length' => float -1
'upload_content_length' => float -1
'starttransfer_time' => float 0
'redirect_time' => float 0
'certinfo' =>array
empty
'redirect_url' => string '' (length=0)
返回的数组中包括了以下信息:
“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_upload” //上传数据的大小
“size_download” //下载数据的大小
“speed_download” //下载速度
“speed_upload” //上传速度
“download_content_length”//下载内容的长度
“upload_content_length” //上传内容的长度
“starttransfer_time” //开始传输的时间
“redirect_time”//重定向耗时
我们甚至可以通过curl来模拟浏览器用POST方式发送数据:
我们先来建立一个可以打印POST数据的页面:
- <?php
- var_dump($_POST);
- ?>
- <?php
- $url = "http://localhost/post.php";
- $post_data = array(
- "author"=>"李捷",
- "title"=>"捷哥浅谈PHP"
- );
- //初始化,创建一个新cURL资源
- $ch = curl_init();
- //设置URL和相应的选项
- curl_setopt($ch,CURLOPT_URL,$url);
- curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
- curl_setopt($ch,CURLOPT_POST,1);
- curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
- //抓取URL并把它传递给浏览器
- $out = curl_exec($ch);
- //关闭cURL资源,并且释放系统资源
- curl_close($ch);
- echo $output;
- ?>
打印出来的结果:
array
'author' => string '李捷' (length=4)
'title' => string '捷哥浅谈PHP' (length=11)
我们可以看到强大的curl已经帮我们把post数据传递过来了,它是这样一个过程:
1.把post数据传递给post.php页面
2.post.php页面将post数据输出显示在页面上
3.curl将post.php接收并打印出的post数据抓取回来,输出在页面上!
我们不仅能使用post传递数据,我们还可以上传文件,方法基本相同:
curl.php
- <?php
- $url = "http://localhost/upload.php";
- $post_data = array(
- "title"=>"惊艳!!!",
- "pic"=>"@d:\李文凯唯美艳照.jpg"
- );
- //初始化,创建一个新cURL资源
- $ch = curl_init();
- //设置URL和相应的选项
- curl_setopt($ch,CURLOPT_URL,$url);
- curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
- curl_setopt($ch,CURLOPT_POST,1);
- curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
- //抓取URL并把它传递给浏览器
- $out = curl_exec($ch);
- //关闭cURL资源,并且释放系统资源
- curl_close($ch);
- echo $output;
- ?>
upload.php
- <?php
- var_dump($_FILES);
- ?>
传递回来的值:
array
'pic' =>array
'name' => string '李文凯唯美艳照.jpg' (length=18)
'type' => string 'application/octet-stream' (length=24)
'tmp_name' => string 'F:\LAMPBrother\Environmental\wamp_32\tmp\php9A73.tmp' (length=52)
'error' => int 0
'size' => int 0
- $post_data = array(
- "title"=>"惊艳!!!",
- "pic"=>"@d:\李文凯唯美艳照.jpg"
- );
上传需要注意的是,要上传的文件名之前要加上@符号!
cURL批处理:
cURL还有一个高级应用,批处理句柄,这个特性可以同步或异步地处理多个URL连接:
- <?php
- // 创建一对cURL资源
- $ch1 = curl_init();
- $ch2 = curl_init();
- // 设置URL和相应的选项
- curl_setopt($ch1, CURLOPT_URL, "http://www.li-jie.me/");
- curl_setopt($ch1, CURLOPT_HEADER, 0);
- curl_setopt($ch2, CURLOPT_URL, "http://www.lampbrother.net/");
- curl_setopt($ch2, CURLOPT_HEADER, 0);
- // 创建批处理cURL句柄
- $mh = curl_multi_init();
- // 增加2个句柄
- curl_multi_add_handle($mh,$ch1);
- curl_multi_add_handle($mh,$ch2);
- $running=null;
- // 执行批处理句柄
- do {
- usleep(10000);
- curl_multi_exec($mh,$running);
- } while ($running > 0);
- // 关闭全部句柄
- curl_multi_remove_handle($mh, $ch1);
- curl_multi_remove_handle($mh, $ch2);
- curl_multi_close($mh);
- ?>
$running会收集来自http://www.li-jie.me和http://www.lampbrother.net的页面内容,实现多个URL的批量处理!
大家看到了吧,以后采集网站摒弃file_get_contents和fopen吧,把我们强大的cURL用起来,会帮你的web应用增色不少!
原文地址:http://bbs.lampbrother.net/read-htm-tid-121356.html
0
上一篇:【捷哥浅谈PHP】第十五弹---使用cURL获取网页内容
下一篇:Mongodb亿级数据量的性能测试-强哥
相关热门文章
- 通讯录助手市场大战 触宝助手...
- linux内核的一些预定义...
- 有信不断满足用户需求,势打造...
- 有信不断满足用户需求,势打造...
- 有信不断满足用户需求,势打造...
- IP Sec VPN与NAT破镜重圆
- 网站导航
- GoAgent图文设置教程
- UT2.0正式版下载
- tomcat6.0配置(含配置视频下载...
- 大家都是用什么来管理hadoop集...
- 网站被人挂了吗,添加了些程序...
- Nginx如何保证不走宕机的那个...
- 大家谈谈MYSQL客户端和服务器...
- 以下代码运行后为何会输出5?...
给主人留下些什么吧!~~
评论热议
- 【捷哥浅谈PHP】第十六弹---文件传输工具cURL的高级应用
- php 中CURL的应用
- PHP中 Curl的应用
- php curl的几段小应用
- PHP中cURL的应用
- php中curl的应用
- 【捷哥浅谈PHP】第十五弹---使用cURL获取网页内容
- php Curl工具类
- PHP Curl工具类
- php CURL的api应用和数字签名
- php中curl、fsockopen的应用
- PHP中的cURL的简单应用
- cURL工具及其应用
- curl是利用URL语法在命令行方式下工作的文件传输工具
- cURL类库—利用URL语法爱命令行方式下工作的文件传输工具
- PHP对象的高级应用
- php正则的高级应用
- PHP cURL 应用
- 小猴子的感想
- 我相信会让你爱上我
- 自己写的个DB类
- 【捷哥浅谈PHP】第十五弹---使用cURL获取网页内容
- 无停顿的键盘控制方法
- 【捷哥浅谈PHP】第十六弹---文件传输工具cURL的高级应用
- Mongodb亿级数据量的性能测试-强哥
- 迈向成功
- 『静哥的项目管理之路』_迭代开发2
- Jsp
- 随想
- 写了个水印函数没时间调,有空的大哥大嫂们帮看看的,!~!
- 不抛弃,不放弃
- (TO:面试、工作的兄弟)表达出来的气场
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
邢台哪个医院皮肤科好
邢台电脑培训学校
石家庄到邢台的火车
邢台到渭南火车时刻表
邢台妇科医院有哪些
北京到邢台物流公司
邢台到唐山的汽车
衡水到邢台的火车
邢台到保定多长时间
邢台情趣内衣
邢台到邯郸的汽车
唐山到邢台的汽车
邢台事业单位招聘信息
邢台有哪些医院
石家庄至邢台
邢台有那些医院
邢台会计培训班
邢台东到石家庄
沧州到邢台汽车
邢台特色饭店
邢台人才市场
邢台焖锅达人
邢台妇幼医院
邢台高档酒店
邢台至张家口
邢台女士征婚
邢台女性医院
邢台二手轿车
秦皇岛到邢台
邢台体检中心
邢台的男科医院
邢台征婚交友
邢台医院地址
邢台会计学校
邢台口腔医院
邢台到唐山汽车
河北邢台邮编
邢台中专学校
邢台金龙大酒店
邢台服装批发
邢台企业培训