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 调试环境(IIS+PHP+MYSQL)
Jan 10 PHP
用header 发送cookie的php代码
Mar 16 PHP
PHP file_get_contents 函数超时的几种解决方法
Jul 30 PHP
Php header()函数语法及使用代码
Nov 04 PHP
Smarty中常用变量操作符汇总
Oct 27 PHP
Zend Framework教程之Application和Bootstrap用法详解
Mar 10 PHP
thinkPHP删除前弹出确认框的简单实现方法
May 16 PHP
thinkphp3.x中session方法的用法分析
May 20 PHP
PHP接口继承及接口多继承原理与实现方法详解
Oct 18 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
PHP耦合设计模式实例分析
Aug 08 PHP
ThinkPHP 5.x远程命令执行漏洞复现
Sep 23 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学习笔记之数组篇
2011/06/28 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
2011/10/17 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
2014/10/01 PHP
详解cookie验证的php应用的一种SSO解决办法
2017/10/20 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
JS之小练习代码
2008/10/12 Javascript
IE6,IE7下js动态加载图片不显示错误
2010/07/17 Javascript
在Javascript里访问SharePoint列表数据的实现方法
2011/05/22 Javascript
javascript语言结构小记(一)
2011/09/10 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
2013/06/05 Javascript
利用js实现禁止复制文本信息
2015/06/03 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
AngularJs导出数据到Excel的示例代码
2017/08/11 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
微信小程序实现简单的select下拉框
2020/11/23 Javascript
使用Python生成url短链接的方法
2015/05/04 Python
使用django-crontab实现定时任务的示例
2018/02/26 Python
python爬虫实例详解
2018/06/19 Python
django admin组件使用方法详解
2019/07/19 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
2019/12/22 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
求职者应聘的自我评价
2013/10/16 职场文书
校园活动策划书范文
2014/01/10 职场文书
资助贫困学生倡议书
2014/05/16 职场文书
节约粮食标语
2014/06/18 职场文书
高一军训的心得体会
2014/09/01 职场文书
教师党员个人自我评价
2015/03/04 职场文书
2015年平安创建工作总结
2015/04/29 职场文书
党支部考察鉴定意见
2015/06/02 职场文书
学生会2016感恩节活动小结
2016/04/01 职场文书
创业计划书之寿司
2019/07/19 职场文书
详解MindSpore自定义模型损失函数
2021/06/30 Python
Python爬取奶茶店数据分析哪家最好喝以及性价比
2022/09/23 Python