基于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实际应用经验篇(1)
Oct 09 PHP
PHP一些常用的正则表达式字符的一些转换
Jul 29 PHP
PHP 变量定义和变量替换的方法
Jul 30 PHP
用sql命令修改数据表中的一个字段为非空(not null)的语句
Jun 04 PHP
PHP可变函数的使用详解
Jun 14 PHP
限制ckeditor上传图片文件大小的方法
Nov 15 PHP
php根据日期判断星座的函数分享
Feb 13 PHP
纯PHP生成的一个树叶图片画图例子
Apr 16 PHP
PHP通过串口实现发送短信
Jul 08 PHP
PHP小偷程序的设计与实现方法详解
Oct 15 PHP
PHP 7.4中使用预加载的方法详解
Jul 08 PHP
PHP实现提高SESSION响应速度的几种方法详解
Aug 09 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编码规范-php coding standard
2007/03/16 PHP
PHP GD 图像处理组件的常用函数总结
2010/04/28 PHP
PHP中include与require使用方法区别详解
2013/10/19 PHP
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
PHP生成指定长度随机数最简洁的方法
2014/07/14 PHP
php获取当前页面完整URL地址
2015/12/30 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
Zero Clipboard js+swf实现的复制功能使用方法
2010/03/07 Javascript
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
用js实现控件的隐藏及style.visibility的使用
2013/06/14 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
基于JS实现的倒计时程序实例
2015/07/24 Javascript
javascript html5实现表单验证
2016/03/01 Javascript
layer实现关闭弹出层刷新父界面功能详解
2017/11/15 Javascript
浅析JS抽象工厂模式
2017/12/14 Javascript
vue文件树组件使用详解
2018/03/29 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
OpenLayers3实现地图显示功能
2020/09/25 Javascript
Python使用cx_Oracle调用Oracle存储过程的方法示例
2017/10/07 Python
python 列表,数组,矩阵两两转换tolist()的实例
2018/04/04 Python
python障碍式期权定价公式
2019/07/19 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
卡塔尔航空官方网站:Qatar Airways
2017/02/08 全球购物
马来西亚户外装备商店:PTT Outdoor
2019/07/13 全球购物
vue实现倒计时功能
2021/03/24 Vue.js
2013年大学生的自我鉴定
2013/10/24 职场文书
本科毕业生自我鉴定
2013/11/02 职场文书
寒假思想汇报
2014/01/10 职场文书
幼儿园数学教学反思
2014/02/02 职场文书
普通简短的个人自我评价
2014/02/15 职场文书
党支部承诺书范文
2014/03/28 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
2014年班组长工作总结
2014/11/20 职场文书
2014年度个人工作总结范文
2015/03/09 职场文书
pycharm无法导入lxml的解决办法
2021/03/31 Python