首页 > 编程 > PHP > 正文

php中使用cURL发送请求、上传图片以及批处理的实现方法

2020-03-22 16:34:58
字体:
来源:转载
供稿:网友
本篇文章给大家带来的内容是关于php中使用cURL发送请求、上传图片以及批处理的实现方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

cURL是利用url语法规定传输文件和数据的工具。php中有curl拓展,一般用来实现网络抓取,模拟发送get post请求,文件上传。

在php中建立curl的基本步骤如下:

1.初始化

2. 设置选项,包括url

3. 执行并获取结果

4. 释放curl句柄。

在工作和学习中,我也是时常用的curl。由于在使用curl设置选项时,各种选项比较难以记忆,需要参考,故在此记录下常用的一些例子,以便后来参考。

实例一 : 抓取网页数据(以拉手网开放api为例,也是get请求)

 ?phpheader( Content-type: text/html; charset=utf-8 $ch = curl_init();//初始化/*============开始设置curl各种选项================*/curl_setopt($ch, CURLOPT_URL, http://open.lashou.com/opendeals/lashou/city.xml curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
echo $html

如果用这种方法发get请求,参数附加到url后面即可,如curl_setopt($ch, CURLOPT_URL, http://localhost/tqj/date/p822.php?name=yyyyy

实例二: 利用curl发送post请求

 ?php$uri = http://localhost/tqj/date/p822.php // post参数数组$data = array ( name = tianquanjun , password = tianquanjun ,//初始化$ch = curl_init ();//各种项设置,网上参考而来,可以查看php手册,自己设置curl_setopt ( $ch, CURLOPT_URL, $uri );curl_setopt ( $ch, CURLOPT_POST, 1 );//post方式curl_setopt ( $ch, CURLOPT_HEADER, 0 );curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );$return = curl_exec ( $ch );curl_close ( $ch );print_r($return);

实例三 :curl 过程调试与错误信息处理

 ?php$uri = http://localhost/tqj/date/p822.php // post参数数组$data = array ( name = tianquanjun , password = tianquanjun ,//初始化$ch = curl_init ();//各种项设置,网上参考而来,可以查看php手册,自己设置curl_setopt ( $ch, CURLOPT_URL, $uri );curl_setopt ( $ch, CURLOPT_POST, 1 );//post方式curl_setopt ( $ch, CURLOPT_HEADER, 0 );curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );$return = curl_exec ( $ch );//容错机制if($return === false){ var_dump(curl_error($ch));//curl_getinfo()获取各种运行中信息,便于调试 $info = curl_getinfo($ch);echo 执行时间 .$info[ total_time ].PHP_EOL;curl_close ( $ch );print_r($return);? 

其中利用curl_error()获取错误信息,curl_getinfo()获取运行相关信息。

实例四: 上传图片,获取返回信息。

跨域上传图片,同时获取返回信息,这个就能大显身手。和post比较像,注意文件之前加一个@符号

 ?php$uri = http://localhost/tqj/date/p822.php // post参数数组$data = array ( author = tianquanjun , upload = @C:/Users/tianquanjun.DANGDANG/Pictures/a.jpg ,//初始化$ch = curl_init ();//各种项设置,网上参考而来,可以查看php手册,自己设置curl_setopt ( $ch, CURLOPT_URL, $uri );curl_setopt ( $ch, CURLOPT_POST, 1 );//post方式curl_setopt ( $ch, CURLOPT_HEADER, 0 );curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );$return = curl_exec ( $ch );//容错机制if($return === false){ var_dump(curl_error($ch));//curl_getinfo()获取各种运行中信息,便于调试 $info = curl_getinfo($ch);echo 执行时间 .$info[ total_time ].PHP_EOL;curl_close ( $ch );print_r($return);

实例五 : curl批处理。

curl有一个高级特性,批处理句柄。允许打开多个curl链接。

批处理就是打开多个curl句柄,并把这些句柄指派给一个批处理句柄,然后在while循环里等待处理完毕。curl_multi_exec()算是称得上多线程处理,不过它还是属于异步的范畴。

 ?phpheader( Content-type: text/html; charset=gbk $urls=array( http://www.baidu.com , http://www.qq.com/ $ch=array();//批处理句柄$mh=curl_multi_init();//打开多个curl句柄,并指派给一个批处理句柄$ch[0]=curl_init($urls[0]);$ch[1]=curl_init($urls[1]);for($i=0;$i $i++)curl_setopt($ch[$i],CURLOPT_RETURNTRANSFER,1);curl_multi_add_handle($mh,$ch[$i]);$running = NULL; usleep(10000); curl_multi_exec($mh,$running);//实现批处理,可以看做curl多线程,实际是异步范畴}while($running $res=array();for($j=0;$j $j++) $res[$j]=curl_multi_getcontent($ch[$j]);//关闭句柄for($k=0;$k $k++) curl_multi_remove_handle($mh,$ch[$k]);curl_multi_close($mh);print_r($res);
独孤九贱(5)_ThinkPHP5视频教程

ThinkPHP是国内最流行的中文PHP开发框架,也是您Web项目的最佳选择。《VeVb.com独孤九贱(5)-ThinkPHP5视频教程》课程以ThinkPHP5最新版本为例,从最基本的框架常识开始,将...

Peter-Zhu 2017-05-16 12:03:57


独孤九贱(4)_PHP视频教程

江湖传言:PHP是世界上最好的编程语言。真的是这样吗?这个梗究竟是从哪来的?学会本课程,你就会明白了。PHP 出品的PHP入门系统教学视频,完全从初学者的角度出发,绝不玩虚的,一切以实用、有用...

Peter-Zhu 2017-03-20 22:47:17


独孤九贱(1)_HTML5视频教程

《VeVb.com原创html5视频教程》课程特色:php 原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了HTML知识。...

Peter-Zhu 2017-03-13 10:15:11


ThinkPHP5实战之[教学管理系统]

本套教程,以一个真实的学校教学管理系统为案例,手把手教会您如何在一张白纸上,从零开始,一步一步的用ThinkPHP5框架快速开发出一个商业项目。

Peter-Zhu 2017-07-24 16:48:56


PHP入门视频教程之一周学会PHP

所有计算机语言的学习都要从基础开始,《PHP入门视频教程之一周学会PHP》不仅是PHP的基础部分更主要的是PHP语言的核心技术,是学习PHP必须掌握的内容,任何PHP项目的实现都离不开这部分的内容,通...

PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表