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 相关文章推荐
基于mysql的论坛(4)
Oct 09 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
Jun 13 PHP
php中serialize序列化与json性能测试的示例分析
Apr 27 PHP
php之CodeIgniter学习笔记
Jun 17 PHP
php中文验证码实现示例分享
Jan 12 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
Apr 08 PHP
使用配置类定义Codeigniter全局变量
Jun 12 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
Jun 19 PHP
用PHP的socket实现客户端到服务端的通信实例详解
Feb 04 PHP
PHP实现微信红包金额拆分试玩的算法示例
Apr 07 PHP
PHP按一定比例压缩图片的方法
Oct 12 PHP
PHP接口类(interface)的定义、特点和应用示例
May 18 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
ThinkPHP3.1之D方法实例详解
2014/06/20 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
2013/12/24 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
js图片延迟加载(Lazyload)三种实现方式
2017/03/01 Javascript
angularjs封装$http为factory的方法
2017/05/18 Javascript
微信小程序使用toast消息对话框提示用户忘记输入用户名或密码功能【附源码下载】
2017/12/09 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
nodejs更新package.json中的dependencies依赖到最新版本的方法
2018/10/10 NodeJs
详解JS浏览器事件循环机制
2019/03/27 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
2019/05/15 Javascript
JS计算两个数组的交集、差集、并集、补集(多种实现方式)
2019/05/21 Javascript
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
jQuery - AJAX load() 实例用法详解
2019/08/27 jQuery
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
python实现人脸识别代码
2017/11/08 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
Python selenium实现微博自动登录的示例代码
2018/05/16 Python
Python Numpy:找到list中的np.nan值方法
2018/10/30 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
2019/09/16 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
python图片指定区域替换img.paste函数的使用
2020/04/09 Python
使用Python下载抖音各大V视频的思路详解
2021/02/06 Python
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
Luxplus荷兰:以会员价购买美容产品等,独家优惠
2019/08/30 全球购物
大学生实习思想汇报
2014/01/12 职场文书