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

 更新时间£º2018年10月15日 14:22:12   作者£ºphp小小菜鸟   我要评论

这篇文章主要介绍了PHP中使用CURL发送get/post请求上传图片批处理 功能,本文通过实例代码给大家介绍的非常详细£¬非常不错£¬具有一定的参考借鉴价值£¬需要的朋友可以参考下

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()获取运行相关信息¡£

实例?#27169;?nbsp; 上传图片£¬获取返回信息¡£

跨域上传图片£¬同时获取返回信息£¬这个就能大显身手¡£和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]);
}
//关?#31449;?#26564;
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请求上传图片批处理 功能£¬希望对大家有所帮助£¬如果大家有任?#25105;?#38382;请给我留言£¬小编会及时回复大家的¡£在此也非常?#34892;?#22823;家对脚本之家网站的支持£¡

相关文章

  • PHP中类的自动加载的方法

    PHP中类的自动加载的方法

    本篇文章主要介绍了PHP中类的自动加载的方法¡£类的自动加载是指在外面的页面中并不需要去¡°引入¡±类文件£¬但是程序会在需要的时候动态加载需要的类文件¡£
    2017-03-03
  • php微信开发之谷歌测距

    php微信开发之谷歌测距

    这篇文章主要为大家详细介绍了php微信开发之谷歌测距的相关资?#24076;?#20855;有一定的参考价值£¬?#34892;?#36259;的小伙伴们可以参?#23478;?#19979;
    2018-06-06
  • PHP中命名空间的使用例子

    PHP中命名空间的使用例子

    今天小编就为大家分享一篇关于PHP中命名空间的使用例子£¬小编觉得内容挺不错的£¬现在分享给大家£¬具有很好的参考价值£¬需要的朋友一起跟随小编来看看吧
    2019-03-03
  • PHP7+Nginx的配置与安装教程详解

    PHP7+Nginx的配置与安装教程详解

    本文分步骤£¬通过文字?#24471;?#30340;形式给大家介绍PHP7+Nginx的配置与安装的相关知识£¬?#34892;?#36259;的朋友参考下吧
    2016-05-05
  • php计算当前程序执行时间示例

    php计算当前程序执行时间示例

    这篇文章主要介绍了php计算当前程序执行时间示例,需要的朋友可以参考下
    2014-04-04
  • PHP结合Mysql数据库实现留言板功能

    PHP结合Mysql数据库实现留言板功能

    这篇文章主要介绍了PHP结合Mysql数据库实现留言板功能的相关资料,需要的朋友可以参考下
    2016-03-03
  • php基于Redis消息队列实现的消息推送的方法

    php基于Redis消息队列实现的消息推送的方法

    这篇文章主要介绍了php基于Redis消息队列实现的消息推送的方法£¬小编觉得挺不错的£¬现在分享给大家£¬也给大家做个参考¡£一起跟随小编过来看看吧
    2018-11-11
  • ThinkPHP中create()方法自动验证表单信息

    ThinkPHP中create()方法自动验证表单信息

    这篇文章主要为大家详细介绍了ThinkPHP中create()方法自动验证表单信息£¬具有一定的参考价值£¬?#34892;?#36259;的小伙伴们可以参?#23478;?#19979;
    2017-04-04
  • php使用ICQ网关发送手机短信

    php使用ICQ网关发送手机短信

    php发送手机短信实例代码¡£
    2013-10-10
  • PHP实现多图上传和单图上传功能

    PHP实现多图上传和单图上传功能

    本文通过实例代码给大家介绍了基于PHP实现多图上传和单图上传功能,代码简单易懂£¬非常不错£¬具有一定的参考借鉴价值£¬需要的朋友可以参考下
    2018-05-05

最新评论

ÁÉÄþ35Ñ¡7¿ª½±½á¹û