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 相关文章推荐
解决中英文字符串长度问题函数
Jan 16 PHP
php 无限级缓存的类的扩展
Mar 16 PHP
UTF8编码内的繁简转换的PHP类
Jul 09 PHP
php ftp文件上传函数(基础版)
Jun 03 PHP
php学习之变量的使用
May 29 PHP
php skymvc 一款轻量、简单的php
Jun 28 PHP
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
Sep 19 PHP
php修改上传图片尺寸的方法
Apr 14 PHP
PHP验证信用卡卡号是否正确函数
May 27 PHP
PHP入门教程之日期与时间操作技巧总结(格式化,验证,获取,转换,计算等)
Sep 11 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
Jul 03 PHP
visual studio code 调试php方法(图文详解)
Sep 15 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
Ubuntu12下编译安装PHP5.3开发环境
2015/03/27 PHP
简单谈谈php延迟静态绑定
2016/01/26 PHP
Symfony的安装和配置方法
2016/03/17 PHP
微信公众号开发客服接口实例代码
2016/10/21 PHP
PHP 计算两个时间段之间交集的天数示例
2019/10/24 PHP
突发奇想的一个jquery插件
2010/11/19 Javascript
jQuery 关于伪类选择符的使用说明
2013/04/24 Javascript
js页面跳转的常用方法整理
2013/10/18 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
JavaScript实现动态删除列表框值的方法
2015/08/12 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
关于javascript原型的修改与重写(覆盖)差别详解
2016/08/31 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
js遍历获取表格内数据的方法(必看)
2017/04/06 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
webpack4.x开发环境配置详解
2018/08/04 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
小程序的上传文件接口的注意要点解析
2019/09/17 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
vue 在methods中调用mounted的实现操作
2020/08/07 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
解决python3中解压zip文件是文件名乱码的问题
2018/03/22 Python
Python 输出时去掉列表元组外面的方括号与圆括号的方法
2018/12/24 Python
python远程连接MySQL数据库
2019/04/19 Python
英国著名的小众美容品牌网站:Alyaka
2017/08/08 全球购物
制冷与电控专业应届生求职信
2013/11/11 职场文书
房地产出纳岗位职责
2013/12/01 职场文书
大学生村官事迹材料
2014/01/21 职场文书
《青海高原一株柳》教学反思
2014/04/25 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
入党介绍人意见怎么写
2015/06/03 职场文书
珍爱生命主题班会
2015/08/13 职场文书
普希金的诗歌赏析(3首)
2019/08/20 职场文书
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
2021/05/12 Python
pytorch 预训练模型读取修改相关参数的填坑问题
2021/06/05 Python