基于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 相关文章推荐
ADODB类使用
Nov 25 PHP
10个可以简化php开发过程的MySQL工具
Apr 11 PHP
PHP 中文处理技巧
Apr 25 PHP
非常实用的php弹出错误警告函数扩展性强
Jan 17 PHP
Yii调试SQL的常用方法
Jul 09 PHP
PHP判断是否连接上网络的方法
Jul 01 PHP
PHP生成唯一ID之SnowFlake算法
Dec 17 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
Dec 19 PHP
详细解读php的命名空间(二)
Feb 21 PHP
PHP实现根据数组某个键值大小进行排序的方法
Mar 13 PHP
PHP的简单跳转提示的实现详解
Mar 14 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 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解析字符串里所有URL地址的方法
2015/04/03 PHP
PHP使用Pthread实现的多线程操作实例
2015/11/14 PHP
PHP字典树(Trie树)定义与实现方法示例
2017/10/09 PHP
sina的lightbox效果。
2007/01/09 Javascript
js 字符串转换成数字的三种方法
2013/03/23 Javascript
SOSO地图JS画出标注和中心点以html形式运行
2013/08/09 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
JS作用域链详解
2017/06/26 Javascript
从parcel.js打包出错到选择nvm的全部过程
2018/01/23 Javascript
jquery操作select常见方法大全【7种情况】
2019/05/28 jQuery
layui select 禁止点击的实现方法
2019/09/05 Javascript
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
vue登录页实现使用cookie记住7天密码功能的方法
2021/02/18 Vue.js
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
Python的print用法示例
2014/02/11 Python
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
python进阶教程之函数对象(函数也是对象)
2014/08/30 Python
python 将md5转为16字节的方法
2018/05/29 Python
聊聊python中的异常嵌套
2020/09/01 Python
一篇文章搞懂python的转义字符及用法
2020/09/03 Python
10个示例带你掌握python中的元组
2020/11/23 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
复古服装:RetroStage
2019/05/10 全球购物
优秀的教师个人的中文求职信
2013/09/21 职场文书
培训班开班仪式主持词
2014/03/28 职场文书
文科毕业生自荐书范文
2014/04/17 职场文书
派出所所长先进事迹
2014/05/19 职场文书
学校与家长安全责任书
2014/07/23 职场文书
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
群众路线自我剖析材料
2014/10/08 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书
导游词之上海杜莎夫人蜡像馆
2019/11/22 职场文书
html中显示特殊符号(附带特殊字符对应表)
2021/06/21 HTML / CSS
简述Java中throw-throws异常抛出
2021/08/07 Java/Android