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 相关文章推荐
删除无限级目录与文件代码共享
Jul 12 PHP
用ODBC的分页显示
Oct 09 PHP
php遍历所有文件及文件夹的方法深入解析
Jun 08 PHP
PHP获取网页标题的3种实现方法代码实例
Apr 11 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
Feb 14 PHP
php实现的mongodb操作类实例
Apr 03 PHP
Nginx下配置codeigniter框架方法
Apr 07 PHP
2款PHP无限级分类实例代码
Nov 11 PHP
完美解决Thinkphp3.2中插入相同数据的问题
Aug 01 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
May 23 PHP
php7连接MySQL实现简易查询程序的方法
Oct 13 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魔术引号所带来的安全问题分析
2014/07/15 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
Vue 中使用富文本编译器wangEditor3的方法
2019/09/26 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
[38:51]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-CDEC
2014/05/22 DOTA
python使用PyFetion来发送短信的例子
2014/04/22 Python
浅析Python中的多进程与多线程的使用
2015/04/07 Python
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
python web框架学习笔记
2016/05/03 Python
Python定时任务APScheduler的实例实例详解
2019/07/22 Python
基于matplotlib xticks用法详解
2020/04/16 Python
python如何快速拼接字符串
2020/10/28 Python
Skyscanner波兰:廉价航班
2017/11/07 全球购物
奥地利智能家居和智能生活网上商店:tink.at
2019/10/07 全球购物
平面设计师的工作职责
2013/11/21 职场文书
数控专业应届生求职信
2013/11/27 职场文书
如何填写个人简历自我评价
2013/12/10 职场文书
拔河比赛口号
2014/06/10 职场文书
新闻传播专业求职信
2014/07/22 职场文书
单位工作证明
2014/10/07 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
中秋节祝酒词
2015/08/12 职场文书
电工实训心得体会
2016/01/14 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL
windows系统搭建WEB服务器详细教程
2022/08/05 Servers