PHP中使用CURL发送get/post请求上传图片批处理功能
发布:smiling 来源: PHP粉丝网 添加日期:2021-10-31 20:07:06 浏览: 评论:0
这篇文章主要介绍了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()获取运行相关信息。
实例四:上传图片,获取返回信息。
跨域上传图片,同时获取返回信息,这个就能大显身手。和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的灵魂。
Tags: CURL get post
相关文章
- ·php curl常见错误:SSL错误、bool(false)(2013-11-30)
- ·curl out of memory window下PHP调用curl报内存不够(2013-12-06)
- ·windows 下 php curl 的支持配置方法(2013-12-06)
- ·PHP 利用curl_init发起http请求模仿登录(2014-01-06)
- ·php curl 伪造IP来源程序实现代码(2014-01-07)
- ·php curl 分离header和body信息(2014-01-07)
- ·PHP curl 获取响应的状态实例(2014-01-08)
- ·php curl模块模拟登录后采集页面实例(2014-01-08)
- ·PHP Curl多线程实现原理与实例详解(2014-01-09)
- ·Drupal 通过cURL Post方式发送一个文件(2014-01-10)
- ·php 通过curl post发送json数据实例(2014-01-10)
- ·php用Curl伪造客户端源IP(2014-01-10)
- ·php利用CURL函数登入163邮箱并获取自己的通讯录(2014-06-17)
- ·php中CURL实现多线程的笔记(2014-06-18)
- ·PHP利用Curl模拟登录并获取数据例子(2014-06-21)
- ·php中curl模拟登陆用户百度知道的例子(2014-06-29)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)