zoukankan      html  css  js  c++  java
  • 七牛远程抓取图片

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

    1.梳理下思路

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

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

     1  /**
     2      * 查看七牛url是否存在
     3      * @param string $url
     4      */
     5     function url_exists($url) {
     6         require_once(COMMON_PATH."qiniu/rs.php");
     7         require_once(COMMON_PATH."qiniu/http.php");
     8         $parts=parse_url($url);
     9         $bucket//
    10         $key=substr($parts['path'], 1);//七牛文件名
    11        //密钥
    12         $accessKey ; 
    13         $secretKey ;
    14         Qiniu_SetKeys($accessKey, $secretKey);
    15         $client = new Qiniu_MacHttpClient(null);
    16         list($ret, $err) = Qiniu_RS_Stat($client, $bucket, $key);//查看单个文件信息
    17         if ($err !== null) {
    18             return false;
    19         } else {
    20             return true;
    21         }
    22     }    

    3.移动单个文件到七牛

     1 /**
     2      * 移动单个头像到七牛
     3      * @param string  $remotePath 远程文件在服务器上的物理地址
     4      * @param string  $qiniuPath  七牛文件地址
     5      */
     6     function oneFetch($remotePath,$qiniuPath){
     7         if(!url_exists($qiniuPath) && file_exists($remotePath)){
     8             require_once(COMMON_PATH."qiniu/rs.php");
     9             require_once(COMMON_PATH."qiniu/http.php");
    10             require_once(COMMON_PATH."qiniu/conf.php");
    11             
    12             $client = new Qiniu_MacHttpClient(NULL);
    13             /*$accessUrl 远程文件访问地址
    14             *$bucket桶
    15             *$key 存储在七牛的文件名
    16             */
    17             $ret = Qiniu_RS_Fetch($client,$accessUrl, $bucket, $key);
    18             
    19             if($ret != NULL)
    20             {
    21                 $errlog = 'fail.log';//写错误日志
    22                 file_put_contents($errlog,    "{$key}\n", FILE_APPEND);
    23             }
    24             else
    25             {
    26                 var_dump($ret);
    27             }
    28         }else{
    29             var_dump('已有头像');
    30         }
    31         
    32     }

    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);
        }
  • 相关阅读:
    linux环境下,使用Navicat连接mysql时,提示本地IP无法连接虚拟环境下的mysql解决方案
    数组-(Zero Sum Subarray)返回数组中和为某个数的子串数组
    hash、hashlib使用
    优先队列
    Jensen 不等式
    ML-集成学习:AdaBoost、Bagging、随机森林、Stacking(mlxtend)、GBDT、XGBoost、LightGBM、CatBoost原理推导及实现
    scipy.optimize优化器的各种使用
    RL-马尔科夫决策过程(MDP)-原理及实现
    ML-sklearn参数随机优化:GridSearchCV、RandomizedSearchCV、hyperopt
    5.matplotlib绘制-meshgrid区域图-可视化ML
  • 原文地址:https://www.cnblogs.com/mingao/p/5007260.html
Copyright © 2011-2022 走看看