PHP中使用CURL发送get/post请求上传图片批处理功能


Posted in PHP onOctober 15, 2018

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

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

1.初始化       

2. 设置选项,包括url     

3. 执行并获取结果  

4. 释放curl句柄。

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

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

<?php
header("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);
$html = curl_exec($ch);//执行句柄,获取返回内容
curl_close($ch);//释放句柄
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()算是称得上多线程处理,不过它还是属于异步的范畴。

<?php
header("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<2;$i++)
{
curl_setopt($ch[$i],CURLOPT_RETURNTRANSFER,1);
curl_multi_add_handle($mh,$ch[$i]);
}
$running = NULL;
do{
 usleep(10000);
 curl_multi_exec($mh,$running);//实现批处理,可以看做curl多线程,实际是异步范畴
}while($running>0);
$res=array();
for($j=0;$j<2;$j++)
{
 $res[$j]=curl_multi_getcontent($ch[$j]);
}
//关闭句柄
for($k=0;$k<2;$k++)
{
 curl_multi_remove_handle($mh,$ch[$k]);
}
curl_multi_close($mh);
print_r($res);
?>

基本算是列举了常用的一些实例。要想灵活运用curl,还是得熟悉curl的各个设置项,这些设置项才是curl的灵魂。

总结

以上所述是小编给大家介绍的PHP中使用CURL发送get/post请求上传图片批处理 功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
Aug 31 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
Jun 09 PHP
php输入流php://input使用示例(php发送图片流到服务器)
Dec 25 PHP
php加密算法之实现可逆加密算法和解密分享
Jan 21 PHP
php设置允许大文件上传示例代码
Mar 10 PHP
xss防御之php利用httponly防xss攻击
Mar 21 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
Jun 04 PHP
PHP提高编程效率的20个要点
Sep 23 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
Aug 10 PHP
PHP 进度条函数的简单实例
Sep 19 PHP
PHP实现的多维数组去重操作示例
Jul 21 PHP
PHP解决高并发的优化方案实例
Dec 10 PHP
深入理解 PHP7 中全新的 zval 容器和引用计数机制
Oct 15 #PHP
php实现二叉树中和为某一值的路径方法
Oct 14 #PHP
php中青蛙跳台阶的问题解决方法
Oct 14 #PHP
PHP通过文件路径获取文件名的实例代码
Oct 14 #PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 #PHP
php实现数组中出现次数超过一半的数字的统计方法
Oct 14 #PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
Oct 14 #PHP
You might like
用PHP实现验证码功能
2006/10/09 PHP
php5中date()得出的时间为什么不是当前时间的解决方法
2008/06/30 PHP
php中通过正则表达式下载内容中的远程图片的函数代码
2012/01/10 PHP
帝国cms目录结构分享
2015/07/06 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
php的api数据接口书写实例(推荐)
2016/09/22 PHP
jQuery实现的类flash菜单效果代码
2010/05/17 Javascript
javascript获取web应用根目录的方法
2014/02/12 Javascript
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
基于javascript实现listbox左右移动
2016/01/29 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
NodeJs读取JSON文件格式化时的注意事项
2016/09/25 NodeJs
基于JS递归函数细化认识及实用实例(推荐)
2017/08/07 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
Python实现计算文件MD5和SHA1的方法示例
2019/06/11 Python
python批量下载抖音视频
2019/06/17 Python
python监控nginx端口和进程状态
2019/09/06 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
多媒体编辑专业毕业生推荐信
2013/11/05 职场文书
个人求职信范例
2014/01/29 职场文书
七年级政治教学反思
2014/02/03 职场文书
十佳党员事迹材料
2014/08/28 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
一般纳税人申请报告
2015/05/18 职场文书
红色影片观后感
2015/06/18 职场文书
公安干警正风肃纪心得体会
2016/01/15 职场文书
如何写好竞聘报告
2019/04/03 职场文书
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers