基于php实现七牛抓取远程图片


Posted in PHP onDecember 01, 2015

由于公司网站之前的用户头像都是存储在自己的服务器上的,后来感觉管理不方便,新增加的用户头像都上传到了七牛,为了方便统一管理,领导说把本地服务器的头像全部迁移到了七牛。

1.梳理下思路

先判断用户的头像是否在七牛,若不存在,本地如果有则抓取到七牛,然后进行批量抓取

2.七牛判断图片是否存在

/**
    * 查看七牛url是否存在
    * @param string $url
    */
   function url_exists($url) {
     require_once(COMMON_PATH."qiniu/rs.php");
     require_once(COMMON_PATH."qiniu/http.php");
     $parts=parse_url($url);
     $bucket ;//桶
     $key=substr($parts['path'], );//七牛文件名
    //密钥
     $accessKey ; 
     $secretKey ;
     Qiniu_SetKeys($accessKey, $secretKey);
     $client = new Qiniu_MacHttpClient(null);
     list($ret, $err) = Qiniu_RS_Stat($client, $bucket, $key);//查看单个文件信息
     if ($err !== null) {
       return false;
     } else {
       return true;
     }
   }

3.移动单个文件到七牛

/**
    * 移动单个头像到七牛
    * @param string $remotePath 远程文件在服务器上的物理地址
    * @param string $qiniuPath 七牛文件地址
    */
   function oneFetch($remotePath,$qiniuPath){
     if(!$this->url_exists($qiniuPath) && file_exists($remotePath)){
       require_once(COMMON_PATH."qiniu/rs.php");
       require_once(COMMON_PATH."qiniu/http.php");
       require_once(COMMON_PATH."qiniu/conf.php");
       $client = new Qiniu_MacHttpClient(NULL);
       /*$accessUrl 远程文件访问地址
       *$bucket桶
       *$key 存储在七牛的文件名
       */
       $ret = Qiniu_RS_Fetch($client,$accessUrl, $bucket, $key);
       if($ret != NULL)
       {
         $errlog = 'fail.log';//写错误日志
         file_put_contents($errlog,  "{$key}\n", FILE_APPEND);
       }
       else
       {
         var_dump($ret);
       }
     }else{
       var_dump('已有头像');
     }
   }

4.批量抓取

function t(){
    header("Content-type: text/html; charset=utf-8");
    set_time_limit(0);
    $start = intval($_GET['num']);//开始位置
    $str = '';
    /*从数据库查询记录*/
    $link = mysql_connect("localhost", "root", "root") or die("error");
    $db_selected = mysql_select_db("test", $link);
    mysql_query ("SET NAMES UTF8");
    $limit = 10;//每次查询数
     $sql = "SELECT * FROM test order by id desc limit {$start},{$limit}"; 
     $result = mysql_query($sql) or die(mysql_error());
    if(mysql_num_rows($result))
    {
      while($row=mysql_fetch_assoc($result)){
          oneFetch($row['remotePath'], $row['qiniuPath']);
      }  
      $start += 10;
      $url = "/t?num={$start}";
      $str = '已经更新'.$start.'条<br />';
      $str .= '<script>location.href="'.$url.'";</script>';//更新$limit条,跳转防止脚本无响应
    }
    else
    {
      echo '结束';
    } 
    echo $str;
    ob_flush();
    flush();
    sleep(2);
    unset($sql,$result,$row);
  }

以上内容是基于php实现七牛抓取远程图片的全部内容,希望大家喜欢。

PHP 相关文章推荐
PHP4实际应用经验篇(7)
Oct 09 PHP
php adodb连接带密码access数据库实例,测试成功
May 14 PHP
PHP Pear 安装及使用
Mar 19 PHP
smarty内置函数config_load用法实例
Jan 22 PHP
php生成PDF格式文件并且加密
Jun 22 PHP
yii2中使用Active Record模式的方法
Jan 09 PHP
php实现文件管理与基础功能操作
Mar 21 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
Dec 20 PHP
PHP大文件分块上传功能实例详解
Jul 22 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
Aug 03 PHP
用Laravel轻松处理千万级数据的方法实现
Dec 25 PHP
使用Huagepage和PGO来提升PHP7的执行性能
Nov 30 #PHP
深入解析PHP中foreach语句控制数组循环的用法
Nov 30 #PHP
简单了解PHP编程中数组的指针的使用
Nov 30 #PHP
PHP 微信支付类 demo
Nov 30 #PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
Nov 30 #PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
Nov 30 #PHP
PHP curl模拟登录带验证码的网站
Nov 30 #PHP
You might like
php xml 入门学习资料
2011/01/01 PHP
php array_walk() 数组函数
2011/07/12 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
PHP登录(ajax提交数据和后台校验)实例分享
2016/12/29 PHP
如何快速的呈现我们的网页的技巧整理
2007/07/01 Javascript
jquery isType() 类型判断代码
2011/02/14 Javascript
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
2020/06/29 Javascript
nodejs 图解express+supervisor+ejs的用法(推荐)
2017/09/08 NodeJs
jQuery实现表格隔行换色
2018/09/01 jQuery
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
2019/03/05 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
2019/11/09 Javascript
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
Flask框架的学习指南之制作简单blog系统
2016/11/20 Python
Python格式化日期时间操作示例
2018/06/28 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
jupyter notebook 增加kernel教程
2020/04/10 Python
Django Path转换器自定义及正则代码实例
2020/05/29 Python
keras实现调用自己训练的模型,并去掉全连接层
2020/06/09 Python
keras打印loss对权重的导数方式
2020/06/10 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
Perfume’s Club美国官网:西班牙第一家在线美容店
2020/06/10 全球购物
大学生的创业计划书就该这么写
2014/01/30 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
个人欠款协议书范本2014
2014/11/02 职场文书
2014年优质护理服务工作总结
2014/11/14 职场文书
考试作弊检讨
2015/01/27 职场文书
给学校的建议书400字
2015/09/14 职场文书
2016年优秀教师先进事迹材料
2016/02/26 职场文书
python munch库的使用解析
2021/05/25 Python
Python制作春联的示例代码
2022/01/22 Python