基于php实现七牛抓取远程图片
发布:smiling 来源: PHP粉丝网 添加日期:2021-06-27 17:04:18 浏览: 评论:0
由于公司网站之前的用户头像都是存储在自己的服务器上的,后来感觉管理不方便,新增加的用户头像都上传到了七牛,为了方便统一管理,领导说把本地服务器的头像全部迁移到了七牛。
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实现七牛抓取远程图片的全部内容,希望大家喜欢。
Tags: 七牛抓取远程图片
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)