基于php实现七牛抓取远程图片
作者:confused_man 发布时间:2024-05-05 09:17:07
标签:php,七牛,抓取,远程,图片
由于公司网站之前的用户头像都是存储在自己的服务器上的,后来感觉管理不方便,新增加的用户头像都上传到了七牛,为了方便统一管理,领导说把本地服务器的头像全部迁移到了七牛。
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实现七牛抓取远程图片的全部内容,希望大家喜欢。


猜你喜欢
- PyCharm 中在使用Turtle(海龟)库绘图体系时,代码明明是正确可以运行的,但是没有提示 ,代码出现黄色标记以及红色波浪线 ,经验不
- 这篇文章主要介绍了python mqtt 客户端代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 在ASP中,也能让XML发挥其优点。例如像.NET那样写一个XML配置文件,在程序中读取,或者将一些数据量不大又经常访问的数据写入到XML中
- PHP如何获取当前页完整URL及其参数 <? echo 'http://'.$_SERVER[&
- 所谓的模块导入( import ),是指在一个模块中使用另一个模块的代码的操作,它有利于代码的复用。在 Python 中使用 import
- 很佩服国外一些前端开发人员对待学问的研究精神,他们很善于总结发现。看到一篇关于安全字体List of Web Safe Fonts的文章,里
- 我们经常会有对图像边缘做扩展的需求.比如希望卷积后得到的矩阵大小不变希望改变图像大小,但是不改变宽高比opencv实现opencv中使用co
- 概述固定长度,数组声明后长度便不能再修改只能存储一种特定类型元素的序列语法编号方式代码示例1直接声明var arr [3]int2makea
- 视频才用流媒体,有后台实时返回数据, 要支持flash播放, 所以需安装对应的flash插件。当视频播放时,每间隔3秒向后台发送请求供检测心
- 引言pymysqlpool (本地下载)是数据库工具包中新成员,目的是能提供一个实用的数据库连接池中间件,从而避免在应用中频繁地创建和释放数
- 前言help(argparse)查看说明文档,“argparse - Command-line parsing libr
- 本文实例讲述了Python统计文件中去重后uuid个数的方法。分享给大家供大家参考。具体如下:利用正则表达式按行获取日志文件中的的uuid,
- 我就废话不多说了,直接上代码吧!import Imagefrom datetime import datetimeimport osstr
- 写在前面Go语言在很多方面天然的具备很多便捷性,譬如网络编程,并发编程。而通道则又是Go语言实现并发编程的重要工具,因为其承担着通道之间互相
- 目录最终版本过程借鉴代码思考urllib.request和requestsBeautifulSoup优化处理总结代码复制可直接使用,记得pi
- 因为旧电脑不幸挂了,所以要在新电脑上面重新安装Python。一看官网发现已经更新到3.8.5+了,乖乖,真是迭代快啊。虽然之前安装过一次,不
- 今天,我们使用面部标记和 OpenCV 检测视频流中的眨眼次数。为了构建我们的眨眼检测器,我们将计算一个称为眼睛纵横比 (EAR) 的指标,
- 躺着赚钱一位匿名知乎网友爆料用Python写了自动化交易程序,2年躺着赚了200万!相当于普通程序员10年的工资,此刻的心情...你懂的!不
- property 和 attribute非常容易混淆,两个单词的中文翻译也都非常相近(property:属性,attribute:特性),但
- 如下所示:def user_degree(self): degree = self.user.update_grade() &n